Junit单元测试
JUnit 3 单元测试
![JUnit 3 单元测试](https://img.taocdn.com/s3/m/9c2ee4d2c1c708a1284a4448.png)
Junit3单元测试笔记1.JUnit是每一个程序员必须掌握的技能之一。
2.使用JUnit的最佳实践:1)新建一个test的source folder,用于存放测试类源代码。
2)目标类与测试类应该处于同一个目录下,这样测试类中就不必导入源代码所在的包,因为他们处于同一目录下。
3)测试类命名规则:假如目标类是Calculator,那么测试类是CalculatorTest。
3.JUnit口号:keep the bar green to keep the code clean.保持横条是绿色的保持代码是整洁的4.我的名言:No reflection, No most frameworks.没有反射,没有太多的数据结构。
5.JUnit:单元测试不是为了证明您是对的,而是为了证明您的代码没有错误。
6.测试用例(Test Case)是单元测试的一个很重要的方面。
7.单元测试主要是用来判断程序运行的结果与自己期望的结果是否一致。
8.在JUnit3.8中,测试方法必须满足如下规则:1)方法必须是public。
2)方法必须是void。
没有返回值。
3)方法没有参数。
4)方法名必须是以Test开头。
9.测试用例之间要保持完全的独立性,不允许任何的依赖关系。
10.我们不能依赖与测试方法的执行顺序。
11.DRY(Don’t Repeat Yourself)。
不要重复你的代码。
在控制台中如下:每一个方法中都有:范例1:求int类型的数组中最大值。
除了使用JUnit方式进行测试之外,还可以在main方法中测试。
测试CalculatorTest,点击13.测试之前是什么状态,测试执行之后就应该是什么状态。
而不应该由于测试的原因导致状态发生了变化。
范例2:删除某一个目录的所有文件1)修改方法访问修饰符,将private修改为default或者是public。
(不推荐使用)。
2)使用反射在测试类中调用目标类的私有方法。
(推荐使用)。
(2).mybatis单元测试(junit测试)
![(2).mybatis单元测试(junit测试)](https://img.taocdn.com/s3/m/03d0a1d609a1284ac850ad02de80d4d8d15a0149.png)
(2).mybatis单元测试(junit测试)⼀、Junit使⽤步骤:1、创建测试⽬录,(src、测试⽬录是test)2、在测试⽬录test中创建与src中相同的包名3、为需要测试的类创建测试类,例如:UsersMapper,测试类是UsersMapperTest4、为被测试类(UsersMapper)中的需要测试的⽅法在测试类型创建相应的⽅法。
⽐如,需要测试findById⽅法,那么则测试类中创建findById⽅法,测试⽅法的要求a、不能有返回值、不能有参数b、需要只⽤@Test注解对该⽅法进⾏注解。
5、在测试⽅法中,使⽤断⾔对结果进⾏判断,assert,判断⼀。
单元测试1. 在项⽬下创建⼀个⽬录test,之后将test右键Mark Directory as(标记⽬录为)->测试源根2. 在test下创建类,类的包名与被测试类的包名⼀致,在被测试类后⾯加上Test,例如:ersMapper与ersMapperTest。
在测试⽅法前@Test,导⼊junit测试路径,点击确定即可,之后maven后台下载。
3. Mybatis的核⼼对象:SqlSessionFactoryBuilder , SqlSessionFactory , SqlSession。
(SqlSessionFactoryBuilder创建⼯⼚,⼀般只⽤⼀次。
SqlSessionFactory是⼯⼚,⼯⼚长期存在。
SqlSession例如是⼯⼚造的汽车,有时间期限,即使⽤完⼯⼚依旧存在。
) SqlSeessionFactoryBuilder⽤过即丢,可⽤来创建多个SqlSessionFactory实例,并提供多个build⽅法的重载来构建SqlSessionFactory. SqlSession(⼀般瞬时、短链接,也可以长连接,⽤完关闭)build(InputStream inputStream,String environment,Properties properties)build(Reader reader,String environment,Properties properties)build(Configuration config)配置信息以三种形式提供给 SqlessionFactoryld 的build ⽅法:InputStream(字节流) Reader (字符流) Configuration (类)读取XML⽂件构造⽅式:String CONFIG_FILE = "mybatis-config.xml";InputStream resourceAsStream = Resources.getResourceAsStream(CONFIG_FILE);SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder().build(resourceAsStream);//⾮静态成员,实例成员,成员变量,通过构造⽅法初始化。
junit+maven单元测试
![junit+maven单元测试](https://img.taocdn.com/s3/m/96d050de0408763231126edb6f1aff00bed57026.png)
junit+maven单元测试⼀、概念junit是⼀个专门测试的框架集合maven进⾏单元测试,可批量测试类中的⼤量⽅法是否符合预期⼆、作⽤:单元测试:测试的内容是类中的⽅法,每⼀个⽅法都是独⽴测试的。
⽅法是测试的基本单位。
三、使⽤⽅法1、pom内加⼊依赖<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope></dependency>2、在maven中src/test/java⽬录下的,创建测试程序。
推荐的创建类和⽅法的提⽰:1、测试类的名称:Test+待测试类名2、测试⽅法的名称:Test+⽅法名称例如:你要测试HelloMaven创建测试类TestHelloMaven@Testpublic void testaDD(){测试HelloMaven的add⽅法是否正确}其中testAdd叫做测试⽅法,定义规则:1、⽅法必须是public的2、⽅法必须没有返回值3、⽅法名称⾃定义,推荐是Test+被测⽅法4、⽅法上⾯加上注解@Test四、举例,Hello项⽬1、新建java源程序,存放在Hello\src\main\java\com\testbk⽬录下,取名HelloMaven.java package com.testbk;import org.junit.Assert;import org.junit.Test;public class TestHelloMaven{@Testpublic void testAdd(){System.out.println("maven junit testAdd()===")HelloMaven hello = new HelloMaven();int res = hello.add(10,20);//验证10+20是不是30,juit提供的⽅法,对⽐结果的//assertEquals(期望值,实际值)Assert.assertEquals(30,res)}}2、新建maven测试类型,存放在Hello\src\main\java\com\testbk⽬录下,取名TestHelloMaven.java package com.testbk;import org.junit.Assert;import org.junit.Test;public class TestHelloMaven{@Testpublic void testAdd(){System.out.println("maven junit testAdd()===")HelloMaven hello = new HelloMaven();int res = hello.add(10,20);//验证10+20是不是30,juit提供的⽅法,对⽐结果的//assertEquals(期望值,实际值)Assert.assertEquals(30,res)}@Testpublic void testAdd2(){System.out.println("#####maven junit testAdd()2###");HelloMaven hello = new HelloMaven();int res = hello.add(10,20);//验证10+20是不是30,juit提供的⽅法,对⽐结果的//assertEquals(期望值,实际值)Assert.assertEquals(50,res);}}3、执⾏mvn clean:清理target⽬录[INFO] Scanning for projects...[INFO][INFO] ------------------------< com.testbk:testjava >-------------------------[INFO] Building maven 0.0.1-SNAPSHOT[INFO] --------------------------------[ jar ]---------------------------------[INFO][INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ testjava ---[INFO] Deleting D:\javaProjects\Hello\target[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 0.196 s[INFO] Finished at: 2021-04-25T22:50:10+08:00[INFO] ------------------------------------------------------------------------4、执⾏mvn compile:编译main/java⽬录下的java为class⽂件,同时把class拷贝到target/classes⽬录下⾯[INFO] Scanning for projects...[INFO][INFO] ------------------------< com.testbk:testjava >-------------------------[INFO] Building maven 0.0.1-SNAPSHOT[INFO] --------------------------------[ jar ]---------------------------------[INFO][INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ testjava ---[INFO] Using 'UTF-8' encoding to copy filtered resources.[INFO] Copying 0 resource[INFO][INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ testjava ---[INFO] Changes detected - recompiling the module![INFO] Compiling 1 source file to D:\javaProjects\Hello\target\classes[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 0.724 s[INFO] Finished at: 2021-04-25T22:54:23+08:00[INFO] ------------------------------------------------------------------------5、执⾏mvn test-compile:编译test/java⽬录下的java为class⽂件,同时class拷贝到target/test-classes⽬录下⾯[INFO] Scanning for projects...[INFO][INFO] ------------------------< com.testbk:testjava >-------------------------[INFO] Building maven 0.0.1-SNAPSHOT[INFO] --------------------------------[ jar ]---------------------------------[INFO][INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ testjava ---[INFO] Using 'UTF-8' encoding to copy filtered resources.[INFO] Copying 0 resource[INFO][INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ testjava ---[INFO] Nothing to compile - all classes are up to date[INFO][INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ testjava ---[INFO] Using 'UTF-8' encoding to copy filtered resources.[INFO] Copying 0 resource[INFO][INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ testjava ---[INFO] Changes detected - recompiling the module![INFO] Compiling 1 source file to D:\javaProjects\Hello\target\test-classes[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 0.764 s[INFO] Finished at: 2021-04-25T22:55:43+08:00[INFO] ------------------------------------------------------------------------6、执⾏mvn test:查看测试结果,通过1,失败1,并在指定⽬录⽣成测试报告Results :Failed tests: testAdd2(com.testbk.TestHelloMaven): expected:<50> but was:<30>Tests run: 2, Failures: 1, Errors: 0, Skipped: 0[INFO] ------------------------------------------------------------------------[INFO] BUILD FAILURE[INFO] ------------------------------------------------------------------------[INFO] Total time: 1.050 s[INFO] Finished at: 2021-04-25T22:57:16+08:00[INFO] ------------------------------------------------------------------------[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project testjava: There are test failures. [ERROR][ERROR] Please refer to D:\javaProjects\Hello\target\surefire-reports for the individual test results.[ERROR] -> [Help 1][ERROR][ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.[ERROR] Re-run Maven using the -X switch to enable full debug logging.[ERROR][ERROR] For more information about the errors and possible solutions, please read the following articles:[ERROR] [Help 1] /confluence/display/MAVEN/MojoFailureException7、修改测试代码,并再次执⾏mvn testpackage com.testbk;import org.junit.Assert;import org.junit.Test;public class TestHelloMaven{@Testpublic void testAdd(){System.out.println("=====maven junit testAdd()===");HelloMaven hello = new HelloMaven();int res = hello.add(10,20);//验证10+20是不是30,juit提供的⽅法,对⽐结果的//assertEquals(期望值,实际值)Assert.assertEquals(30,res);}@Testpublic void testAdd2(){System.out.println("#####maven junit testAdd()2###");HelloMaven hello = new HelloMaven();int res = hello.add(30,20);//验证10+20是不是30,juit提供的⽅法,对⽐结果的//assertEquals(期望值,实际值)Assert.assertEquals(50,res);}}查看运⾏结果,测试通过T E S T S-------------------------------------------------------Running com.testbk.TestHelloMaven=====maven junit testAdd()===#####maven junit testAdd()2###Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.034 secResults :Tests run: 2, Failures: 0, Errors: 0, Skipped: 0[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 1.282 s[INFO] Finished at: 2021-04-25T22:58:41+08:00 [INFO] ------------------------------------------------------------------------。
junit5单元测试语法
![junit5单元测试语法](https://img.taocdn.com/s3/m/65245d1776232f60ddccda38376baf1ffc4fe3c5.png)
junit5单元测试语法JUnit 5 是Java 编程语言中最新的单元测试框架,用于编写和运行单元测试。
JUnit 5 提供了许多新特性和改进,使得单元测试更加灵活、强大和易于扩展。
以下是关于JUnit 5 单元测试语法的基本介绍:1. 注解(Annotations)JUnit 5 中使用注解来标识测试方法、测试类和执行顺序等信息。
以下是一些常用的注解:•@Test: 标识一个测试方法。
•@BeforeEach: 标识在每个测试方法之前执行的方法。
•@AfterEach: 标识在每个测试方法之后执行的方法。
•@BeforeAll: 标识在所有测试方法之前执行的方法。
•@AfterAll: 标识在所有测试方法之后执行的方法。
•@DisplayName: 设置测试方法的显示名称。
import org.junit.jupiter.api.Test;import static org.junit.jupiter.api.Assertions.*;public class MyTests {@Test@DisplayName("My Test")void myTest(){// 测试代码assertEquals(2,1+1);}}2. 断言(Assertions)JUnit 5 提供了一系列的断言方法来验证测试的预期结果。
以下是一些常用的断言:•assertEquals(expected, actual): 验证两个值是否相等。
•assertTrue(condition): 验证条件是否为true。
•assertFalse(condition): 验证条件是否为false。
•assertNull(actual): 验证值是否为null。
•assertNotNull(actual): 验证值是否不为null。
•assertThrows(exceptionType, executable): 验证是否抛出指定类型的异常。
Junit单元测试-实验报告
![Junit单元测试-实验报告](https://img.taocdn.com/s3/m/c30dce627c1cfad6185fa77f.png)
软件工程与计算Ⅰ实验报告实验名称: Junit单元测试实验分组号:实验人:陈燕珠班级: H13软件工程学号: _实验指导教师:陈国明实验场地:花都校区实验楼709实验时间: 2015、6、9成绩:实验四 Junit单元测试一、实验目的1.掌握白盒测试方法,并按单元测试的要求设计测试用例。
2.能熟练应用junit测试工具进行单元测试。
3.进行代码覆盖检查。
二、实验要求掌握系统测试的基本原理,按实验内容及步骤完成操作,完成实验报告,所有实验环节均由每位学生独立完成,严禁抄袭他人实验结果。
根据白盒法设计测试用例,并撰写单元测试计划书。
根据每个测试用例,编写基本Junit的单元测试脚本。
生成html格式的代码覆盖测试报告。
三、实验环境主流PC机一套,windows操作系统eclipse开发平台。
四、原理知识1.测试基本方法黑盒测试和白盒测试(1)黑盒测试(Black_Box testing)黑盒测试把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下、注重于测试软件的功能性要求,测试者在程序接口处进行测试,只检查程序功能是否按照规格说明书的规定正常使用,程序是否能接收输入数据而产生正确的输出信息,并且保持数据库和文件的完整性黑盒测试通常能发现以下几类错误:1、功能不对或遗漏2、界面错误3、数据结构或外部数据库访问错误4、性能错误5、初始化和终止错误采用黑盒技术设计测试用例的方法1、等价类划分2、边值分析法3、因果图4、猜错5、随机测试图1:白盒测试(2)白盒测试(White_Box testing)盒测试主要用于检查程序的内部结构、逻辑、循环和路径。
常用的白盒测试用例设计方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、符号测试法等。
其中最主要的方法就是逻辑覆盖法。
1、语句覆盖2、判定覆盖3、条件覆盖4、条件判定覆盖5、多条件覆盖图2:黑盒测试手工测试和自动化测试(1)手工测试手工测试有其不可替代的地方,因为人具有很强的判断能力,而工具没有,所以手工测试的不可替代性体现在以下几个方面:①测试用例的设计:测试人员的经验和对错误的判断能力是工具不可替代的;②界面和用户体验测试:人类的审美观和心理体验是工具不可模拟的;③正确性的检查:人们对是非的判断、逻辑推理能力是工具不具备的。
junit用法
![junit用法](https://img.taocdn.com/s3/m/2a82ecc64793daef5ef7ba0d4a7302768e996f0c.png)
junit用法Junit是一个Java语言的单元测试框架,它可以帮助开发人员快速、方便地编写和运行测试用例。
在软件开发过程中,单元测试是非常重要的一环,它可以帮助开发人员及时发现代码中的问题,提高代码质量和可维护性。
本文将介绍Junit的用法,包括如何编写测试用例、运行测试用例和使用Junit的一些高级特性。
一、编写测试用例在使用Junit进行单元测试时,我们需要编写测试用例。
测试用例是一段代码,用于测试被测试代码的某个功能是否正确。
下面是一个简单的测试用例示例:```import org.junit.Test;import static org.junit.Assert.assertEquals;public class CalculatorTest {@Testpublic void testAdd() {Calculator calculator = new Calculator();int result = calculator.add(2, 3);assertEquals(5, result);}}```在上面的示例中,我们使用了Junit的@Test注解来标记测试用例方法。
在测试用例方法中,我们创建了一个Calculator对象,并调用了它的add方法来计算2+3的结果。
然后,我们使用Junit的assertEquals方法来判断计算结果是否等于5。
如果结果不等于5,测试用例将会失败。
二、运行测试用例在编写好测试用例后,我们需要运行它们来验证被测试代码的正确性。
Junit提供了多种运行测试用例的方式,包括在IDE中运行、使用命令行运行和使用构建工具运行。
下面是在IDE中运行测试用例的步骤:1. 在IDE中打开测试类文件。
2. 点击测试类文件中的“Run”按钮或右键点击测试类文件并选择“Run As”->“JUnit Test”。
3. 等待测试运行完成,查看测试结果。
如果测试用例全部通过,将会显示绿色的“OK”标志;如果有测试用例失败,将会显示红色的“Failures”标志,并列出失败的测试用例。
软件测试实验3--Junit单元测试
![软件测试实验3--Junit单元测试](https://img.taocdn.com/s3/m/c6ada7c0e518964bcf847cd8.png)
南京理工大学泰州科技学院实验报告书课程名称:《软件测试与质量保证》实验题目:实验三Junit单元测试班级:学号:姓名:指导教师:一、实验目的1.了解Junit测试框架用途及相关框架组成要素2.掌握Junit3.8中断言的使用及Assert静态类的相关用法3.掌握在Eclipse中如何结合JUnit3.8进行单元测试的过程二、实验内容1、使用java语言编写一个类,该类用于完成简单的数学四则运算;然后使用Junit单元测试方法对编写的类进行测试。
三、实验步骤及结果1、(1)实验程序package ;import .apache.bcel.internal.generic.NEW;import junit.framework.Assert;import junit.framework.TestCase;public class MathTest extends TestCase{public void testAdd(){Math math=new Math();int result=math.add(1,2);Assert.assertEquals(3,result);}public void testMin(){Math math=new Math();int result=math.min(1,2);Assert.assertEquals(-1,result);}public void testMui(){Math math=new Math();int result=math.mui(1,2);Assert.assertEquals(2,result);}public void testDiv(){Math math=new Math();int result=0;try{result=math.div(6,2);}catch(Exception e){e.printStackTrace();}Assert.assertEquals(3,result);}public void testDiv1(){Throwable throwable=null;Math math=new Math();try{int result=math.div(6,0);}catch(Exception e){throwable=e;}assertNotNull(throwable);assertEquals(Exception.class,throwable.getClass());assertEquals("除数不能为零",throwable.getMessage()); }}(2)实验结果四、出现问题及解决方法1、程序中不能识别TestCase类。
junit单元测试步骤
![junit单元测试步骤](https://img.taocdn.com/s3/m/153858777f21af45b307e87101f69e314332face.png)
junit单元测试步骤:1、导入包junit测试包:JUnit测试版本,3.81版,4.0版,导入对应的jar包; 2、写一个类扩展(继承) TestCase; 3、在需要测试的方法名前加test生成新的测试方法;4、运行测试,用断言(assert***)的方法测试成功(显示绿色)或失败(显示红色),或者自己判断结果正确与否。
junit单元测试:
1、单元测试(unittesting),是在计算机编程中,针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。
2、单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。
3、单元测试会为我们的承诺做保证。
编写单元测试就是用来验证这段代码的行为是否与我们期望的一致。
在实践工作中,进行了完整计划的单元测试和编写实际的代码所花费的精力大致上是相同的。
一旦完成了这些单元测试工作,很多Bug将被纠正,在确信他们手头拥有稳定可靠的部件的情况下,开发人员能够进行更高效的系统集成工作。
软件单元测试工具有哪些功能
![软件单元测试工具有哪些功能](https://img.taocdn.com/s3/m/81cef48fd4bbfd0a79563c1ec5da50e2524dd105.png)
软件单元测试工具有哪些功能单元测试在软件开发中扮演着至关重要的角色,它可以帮助开发人员快速准确地检测代码,降低错误率,提高代码质量。
为了提高单元测试效率,开发人员通常会选择使用专门的软件单元测试工具。
下面将介绍一些常见的软件单元测试工具及其功能。
1. JUnitJUnit是Java语言的一个单元测试框架,它提供了一组注解和断言方法,可以帮助开发人员编写和执行单元测试。
JUnit支持各种测试运行器和扩展,可以轻松地与其他工具集成。
功能包括断言方法、测试运行器、测试套件、参数化测试等。
2. NUnitNUnit是.NET平台下的一个单元测试框架,它提供了类似JUnit的功能,可以帮助.NET开发人员编写和执行单元测试。
NUnit支持多种测试运行器和扩展,可以进行参数化测试、并行测试、数据驱动测试等。
3. PHPUnitPHPUnit是PHP语言的一个单元测试框架,它可以帮助PHP开发人员编写和运行单元测试。
PHPUnit提供了各种断言方法、数据提供器、测试运行器等功能,支持代码覆盖率检测、依赖注入等特性。
4. JasmineJasmine是一个专门针对JavaScript的行为驱动开发(BDD)框架,它可以用于编写前端代码的单元测试。
Jasmine提供了描述性的语法风格,支持异步测试、Spy测试和模拟器等功能。
5. PyTestPyTest是Python语言的一个简单实用的单元测试框架,它易于学习和使用,并且支持灵活的参数化测试、测试夹具、模块化测试等功能。
PyTest还可以与其他Python测试工具集成,方便开发人员进行代码覆盖率检测和性能测试。
结论软件单元测试工具的功能多种多样,每种工具都有其独特的特点和优势。
选择适合自己项目的工具,并熟练掌握其功能和用法,可以帮助开发人员更快速地进行单元测试,提高代码质量,减少错误。
希望本文介绍的软件单元测试工具及其功能对您有所帮助。
Java单元测试:JUnit和Mockito的使用指南
![Java单元测试:JUnit和Mockito的使用指南](https://img.taocdn.com/s3/m/33012cfbc67da26925c52cc58bd63186bdeb925a.png)
Java单元测试:JUnit和Mockito的使用指南引言:在软件开发过程中,单元测试是一个至关重要的环节。
通过对代码的逐个单元进行测试,可以确保代码的质量和稳定性。
在Java开发中,JUnit和Mockito是两个常用的工具,它们可以帮助开发者更轻松地进行单元测试。
本文将为您介绍JUnit和Mockito的使用指南,帮助您更好地掌握这两个工具的功能和用法。
一、JUnit简介JUnit是一个Java语言的单元测试框架,它提供了一系列的注解和断言方法,方便开发者编写和执行单元测试。
JUnit的核心思想是“测试驱动开发”(Test-Driven Development,TDD),即在编写代码之前先编写测试用例,通过不断迭代的方式来开发和完善代码。
1.1 JUnit的安装和配置要使用JUnit,首先需要将JUnit的相关库文件导入到项目中。
可以通过Maven或Gradle等构建工具来管理依赖,也可以手动下载并导入JUnit的jar包。
导入完成后,就可以在代码中使用JUnit的注解和断言方法。
1.2 编写测试用例在JUnit中,每个测试用例都是一个独立的方法。
可以使用@Test注解来标记测试方法,JUnit会自动执行被标记的方法,并判断测试结果是否符合预期。
例如:```@Testpublic void testAddition() {int result = Calculator.add(2, 3);assertEquals(5, result);}```上述代码中,我们使用@Test注解标记了一个测试方法,该方法调用了被测试的Calculator类的add方法,并使用断言方法assertEquals来判断结果是否等于预期值。
如果测试通过,JUnit会输出“OK”;如果测试失败,JUnit会输出错误信息。
1.3 JUnit的高级特性除了基本的注解和断言方法外,JUnit还提供了一些高级特性,如参数化测试、测试套件和测试运行器等。
JUnit单元测试基础基础实验
![JUnit单元测试基础基础实验](https://img.taocdn.com/s3/m/f3c9ba6ee518964bcf847c4a.png)
实验1:JUnit单元测试基础董瑞志常熟理工学院软件工程系实验目的理解手工编写单元测试的基本方法;编写简单的基于JUnit的单元测试用例;深入掌握JUnit的核心类、JUnit生命周期。
课时安排8课时实验内容JUnit初步单元测试可以描述为“确保方法接收预期范围内的输入,并且对每个测试输入返回预期的结果。
”单元测试是独立的一个工作单元(一个工作单元是一项任务,它不依赖于其他任何任务的完成)。
在Java应用程序中,“独立的一个动作单元”常常指的是一个方法。
1.编写Calculator类及其手工测试类TestCalculatorManual图1:手工测试Calculator单元测试的一条准则是“若程序的某项功能没有经过测试,那么该功能基本等于不存在”。
这里的add方法是Calculator的核心功能之一,这里我们先手工编写测试类TestCalculatorManual。
2.TestCalculatorManual的设计优化也许你想为Calculator添加其他方法如subtract或multiply,就需要对TestCalculatorOne进行模块化的优化:图2:优化手工测试的测试脚本3.用JUnit进行单元测试(1)JUnit有很多功能可以简化测试用例的编写和运行,我们编写Test Case—TestCalculatorWithJUnit如下。
图3:使用JUnit设计测试脚本在Calculator类中添加subtract(), multiply(),divide()后,如何编写手工测试用例和基于JUnit 框架的测试用例应该如何编写?(2)使用默认的TestSuite, 显式调用Junit TestRunner图4:显式调用Junit TestRunner/** 调用由TestRunner自动创建的TestSuite对象* 默认的TestSuite对象将扫描测试类,找出所有以test开头的方法,* 为每一个testXXX方法都创建一个TestCase实例。
基于JUnit的单元测试报告
![基于JUnit的单元测试报告](https://img.taocdn.com/s3/m/c3a6966edd36a32d7375816d.png)
实验3 基于JUnit的单元测试一、实验目的与要求1、通过动手实际操作,巩固所学的单元测试相关知识2、初步了解JUnit工具的使用方法,加深对单元测试的认识3、熟悉eclipse工具的基本操作,掌握基于Eclipse工具的Java编程4、学会使用EclEmma对测试覆盖率进行分析5、通过实际代码案例,掌握单元测试的操作步骤二、实验设备1、电脑PC2、Eclipse3、Junit工具4、EclEmma工具三、实验过程步骤一:确定单元测试方案本实验选择StringUtils.java类中的四个方法作为Java单元测试的对象,选用Eclipse作为Java开发工具,下载并安装JUnit和EclEmma工具,使用JUnit进行单元测试,使用EclEmma进行覆盖率分析来辅助进行单元测试。
步骤二:JUnit的下载安装JUnit是一个开源的Java测试框架,是单元测试框架体系xUnit的一个实例,目前已经成为Java单元测试的标准。
JUnit软件包可以从网站http: 中下载,本次实验中使用的是JUnit4.10版本。
无须解压JUnit压缩包,选中eclipse中的工程,在Eclipse菜单Project的子项Properties中选择Java Build Path,单击Libraries标签,单击Add External JARs 按钮,选择junit4.10.jar后单击“打开”按钮,完成JUnit安装,安装完成后重启Eclipse,如图3-1所示。
图3-1在Eclipse中安装JUnit步骤三:EclEmma的下载与安装EclEmma是一个开源的覆盖率工具,可以帮助大家在单元测试的时候分析代码覆盖情况,可从网站/download.html中下载Jacoco 的Eclipse插件EclEmma最新版,本实验中使用的是Eclemma3.1.2版本解压eclemma-3.1.3.zip到Eclipse安装路径下的dropins目录中,并且保留如图3-2中的文件和文件夹。
单元测试工具有哪些种类
![单元测试工具有哪些种类](https://img.taocdn.com/s3/m/f72da6f3f021dd36a32d7375a417866fb84ac004.png)
单元测试工具有哪些种类
在软件开发过程中,单元测试是一个至关重要的环节,能够确保代码的质量和可靠性。
而为了更高效地进行单元测试,开发人员通常会借助各种单元测试工具。
下面就介绍一些常见的单元测试工具种类:
1. JUnit
JUnit是Java语言最为流行的单元测试框架之一,通过使用JUnit,开发人员可以轻松编写和运行单元测试用例。
其简单易用的API和丰富的功能使得JUnit成为Java开发中的必备工具。
2. NUnit
NUnit是.NET平台上的单元测试框架,与JUnit类似,提供了丰富的断言和注释功能,可以方便地编写和执行单元测试用例。
NUnit已经被广泛应用于.NET开发领域。
3. PyTest
PyTest是Python语言中的单元测试框架,具有简洁优雅的语法和丰富的插件支持,可以对Python代码进行高效的单元测试。
PyTest的易用性和灵活性使其在Python开发者中备受欢迎。
4. Jasmine
Jasmine是一款专门用于JavaScript单元测试的框架,支持BDD(行为驱动开发)风格的测试写法,能够更直观地描述代码行为。
Jasmine的断言和测试报告功能使得JavaScript代码的测试变得更加简单和可靠。
5. PHPUnit
PHPUnit是PHP语言中最流行的单元测试框架,提供了丰富的断言方法和测试辅助功能,可以帮助PHP开发人员快速编写和执行单元测试。
PHPUnit的灵活性和易用性使其成为PHP开发中的重要工具。
以上就是几种常见的单元测试工具种类,开发人员可以根据自身项目的需求和开发语言的特点选择合适的工具进行单元测试,以提高代码的质量和可靠性。
教你用IDEA配置JUnit并进行单元测试
![教你用IDEA配置JUnit并进行单元测试](https://img.taocdn.com/s3/m/5cac4d3f7275a417866fb84ae45c3b3567ecddfc.png)
教你⽤IDEA配置JUnit并进⾏单元测试⽬录⼀、JUnit是什么?⼆、IDEA的JUnit配置三、⽣成JUnit4测试⽤例⼀、JUnit 是什么?JUnit 是⼀个 Java 语⾔的回归测试框架(regression testing framework),由 Kent Beck 和 Erich Gamma 建⽴。
Junit 测试也是程序员测试,即所谓的⽩盒测试,它需要程序员知道被测试的代码如何完成功能,以及完成什么样的功能。
⼆、IDEA 的 JUnit 配置(1)添加junit的依赖jar包 junit-4.12.jar、hamcrest-core-1.3.jarMaven项⽬pom配置:Maven项⽬pom配置:<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>org.hamcrest</groupId><artifactId>hamcrest-core</artifactId><version>1.3</version></dependency>(2)安装junit4插件(3) 选择默认使⽤Junit4(4) 配置输出路径修改 Output Path 为:${SOURCEPATH}/../../test/java/${PACKAGE}/${FILENAME}(5)修改测试⽤例模板。
模板中⽣成的 package 的包名需去掉 test。
三、⽣成 JUnit4 测试⽤例⽅法⼀:在待编写测试的 java 类源码块上按快捷键 Alt + Insert。
IntelliJIDEA使用JUnit单元测试
![IntelliJIDEA使用JUnit单元测试](https://img.taocdn.com/s3/m/2ab0062d492fb4daa58da0116c175f0e7cd119a8.png)
IntelliJIDEA使⽤JUnit单元测试转载:前⾔单元测试的基本使⽤⼀、环境配置使⽤idea IDE 进⾏单元测试,⾸先需要安装JUnit 插件。
1.安装JUnit插件步骤File-->settings-->Plguins-->Browse repositories-->输⼊JUnit-->选择JUnit Generator V2.0安装。
2.使⽤JUnit插件在需要进⾏单元测试的类中,使⽤快捷键alt+insert,选择JUnit test,选择JUnit4。
⼆、单元测试代码Demo: @Testpublic void testAdd() {assertEquals(2, new UserDao().add(1, 1));}1>注意事项: 1、测试⽅法上⾯必须使⽤@Test注解进⾏修饰。
2、测试⽅法必须使⽤public void 进⾏修饰,不能带有任何参数。
3、新建⼀个源代码⽬录⽤来存放测试代码。
4、测试类的包应该与被测试类的包保持⼀致。
5、测试单元中的每⼀个⽅法必须独⽴测试,每个测试⽅法之间不能有依赖。
6、测试类使⽤Test做为类名的后缀(⾮必要)。
7、测试⽅法使⽤test作为⽅法名的前缀(⾮必要)。
2>错误解析: 1、Failure ⼀般是单元测试使⽤的断⾔⽅法判断失败引起,说明预期结果和程序运⾏结果不⼀致。
2、error 是有代码异常引起的,他产⽣于测试代码本⾝中的Bug。
3、测试⽤例是不是⽤来证明你是对的,⽽是⽤来证明你没有错。
3>测试流程:代码Demo: @BeforeClasspublic static void setUpBeforeClass() throws Exception {}@AfterClasspublic static void setUpAfterClass() throws Exception {}@Beforepublic void before() throws Exception {}@Afterpublic void after() throws Exception {} 1、@BeforeClass所修饰的⽅法在所有⽅法加载前执⾏,⽽且他是静态的在类加载后就会执⾏该⽅法, 在内存中只有⼀份实例,适合⽤来加载配置⽂件。
软件测试实验JUnit单元测试
![软件测试实验JUnit单元测试](https://img.taocdn.com/s3/m/67d7ee7d777f5acfa1c7aa00b52acfc789eb9fa4.png)
第三章JUnit单元测试实验1 开始使用JUnit实验目的1、学习使用进行单元测试;2、掌握编写测试代码的方法;3、应用JUnit进行单元测试,掌握最佳实践编写测试代码.实验环境1、Windows环境,MyEclipse或Eclipse,.2、每个学生操作1台电脑.实验原理JUnit是一个开源的Java编程语言的单元测试框架,最初由 Erich Gamma 和 Kent Beck 编写.Junit测试是一种白盒测试工具.JUnit是一套框架,继承TestCase类,就可以用Junit进行自动测试了.具有JUnit经验对于应用“测试驱动开发TDD”的程序开发模型是非常重要的.JUnit本质上是一套框架,即开发者制定了一套条条框框,遵循这此条条框框要求编写测试代码,如继承某个类,实现某个接口,就可以用JUnit进行自动测试了.由于JUnit相对独立于所编写的代码,可以测试代码的编写可以先于实现代码的编写,XP 中推崇的 test first design的实现有了现成的手段:用JUnit写测试代码,写实现代码,运行测试,测试失败,修改实现代码,再运行测试,直到测试成功.以后对代码的修改和优化,运行测试成功,则修改成功.Java 下的 team 开发,采用 cvs版本控制 + ant项目管理 + JUnit 集成测试的模式时,通过对ant的配置,可以很简单地实现测试自动化.实验内容根据下面的实验步骤完成实验.1、JUnit包下载.1 从下载Junit,打开该链接,会有一个下载链接,下载,保存在用户机的文件系统中.2 解包,得到如图3-1的解包文件.图1 Junit解包文件表1 Junit文件说明文件/目描述录JUnit框架结构、扩展和测试运行器的二进制发布JUnit的源代码,包括一个Ant 的buildfile文件junit是个目录,内有JUnit自带的用JUnit编写的测试示例程序javadoc JUnit完整的API文档doc一些文档和文章,包括“Test Infected: Programmers Love Writing Tests”和其它一些资料,可以帮助我们入门.3 配置以JUnit4.8.2为例.步骤如下:①右击“我的电脑”-“属性”-高级-环境变量;②在系统变量中选择“CLASSPATH”如果没有则新建一个,变量名CLASSPATH,变量值d:\junit4.8.2\如果有CLASSPATH,将d:\junit4.8.2\加入到变量值即可,多个中间需用;隔开.图2 Junit配置成功4 检验:运行中输入cmd输入命令:java 配置成功,如图2所示.2、编写JUnit测试用例.使用JUnit 的最佳实践:(1)新建一个名为test的source folder,用于存放测试类源代码;(2)目标类与测试类应该位于同一个包下面,这样测试类中就不必导入源代码所在的包,因为他们位于同一个包下面;(3)测试类的命名规则:假如目标类是Calculator,那么测试类应该命名为TestCalculator或者是CalculatorTest.下面将以一个具体的实例进行说明.1 新建一Java Project.图3 新建Java Project2 配置构建路径.图4 配置构建路径 3 Add Library-JUnit 4.图5 Add Library图6 选择JUnit 41图7 选择JUnit 424 建一个包并在此包下建一个除法类:Divide.图8 类DivideDivide类的程序源代码如下所示:package ;public class Divide {private static int result;public void divide int num{result/=num;}public int getResult{return result;}public void setResult int result代码编写完成后,进行调试编译,确保没有语法错误.5 右键Divide类.图9 新建JUnit Test Case1图10 新建JUnit Test Case2图11 新建JUnit Test Case3MyEclipse会自动为测试类取名:被测试类+Test,单击Next就可以了.根据图12选择需要进行测试的方法.注意:测试类之所以使用“Test”开头或“Test”结尾,是为了更好的区分测试类与被测试类.图12 选择需要测试的方法6 创建测试用例.首先创建一个默认的测试用例.图13 产生默认的测试用例7 执行测试用例.如图14所示.测试结果:红色,测试失败.图14 运行测试用例图15 测试结果所有类测试结果8 修改测试用例:.具体代码如图16所示.新测试用例运行后的测试结果如图17所示.注意:测试方法必须使用注解修饰. 测试方法必须使用 public void 修饰,而且不能带有任何参数.测试方法在中没有要求,但是为了使得命名意义,一般推荐采用“test”+“被测试方法”的命名规则.assertEquals 是由JUnit 提供的一系列判断测试结果是否正确的静态断言方法位于类中之一,我们使用它将执行结果 result 和预期值“result”进行比较,来判断测试是否成功.图16 修改后的测试用例图17 修改后的测试用例的测试结果绿色的进度条提示我们,测试运行通过了.但现在就宣布代码通过了单元测试还为时过早.记住:你的单元测试代码不是用来证明你是对的,而是为了证明你没有错.因此单元测试的范围要全面,比如对边界值、正常值、错误值得测试;对代码可能出现的问题要全面预测,而这也正是需求分析、详细设计环节中要考虑的.3、应用JUnit对类WordDealUtil编写测试代码.(1)被测试程序说明:对名称、地址等字符串格式的内容进行格式检查.将Java对象名称每个单词的头字母大写按照数据库命名的习惯进行格式化格式化后的数据import 对名称、地址等字符串格式的内容进行格式检查或者格式化的工具类/public class WordDealUtil {/将Java对象名称每个单词的头字母大写按照数据库命名的习惯进行格式化格式化后的数据为小写字母,并且使用下划线分割命名单词例如:employeeInfo 经过格式化之后变为employee_infoparam name Java对象名称/public static String wordFormat4DBString name{Pattern p = "A-Z";Matcher m = name;StringBuffer sb = new StringBuffer;while{sb, "_"+;}return sb.toString.toLowerCase;}}//测试wordFormat4DB正常运行的情况Test public void wordFormat4DBNormal{String target = "employeeInfo";String result = target;assertEquals"employee_info", result;}}推荐每编写完一个测试方法,则执行”run”,看测试结果,结果应该是通过的.测试结果通过:(3)继续添加测试代码,并运行看测试结果.public class TestWordDealUtil {//测试 null 时的处理情况Test public void wordFormat4DBNull{String target = null;String result = target;assertNullresult;}//测试空字符串的处理情况Test public void wordFormat4DBEmpty{ String target = "";String result = target;assertEquals"", result;}//测试当首字母大写时的情况Test public void wordFormat4DBegin{ String target = "EmployeeInfo";String result = target;assertEquals"employee_info", result;}//测试当尾字母为大写时的情况Test public void wordFormat4DBEnd{ String target = "employeeInfoA";String result = target;assertEquals"employee_info_a", result;再次运行测试.很遗憾,JUnit 运行界面提示我们有两个测试情况未通过测试——当首字母大写时得到的处理结果与预期的有偏差,造成测试失败failure;而当测试对null 的处理结果时,则直接抛出了异常——测试错误error.显然,被测试代码中并没有对首字母大写和 null 这两种特殊情况进行处理.图18 JUnit测试运行结果(4)修改测试代码,直到测试通过.修改以后的代码:测试结果:实验小结通过本次实验掌握了Junit单元测试的环境配置,以及基本操作步骤,学习到了JInit单元测试的作用以及如何修改错误,对以后进行软件测试方面收获非常大.经过这次理论学习,明白了要求掌握的知识对于我今后的作用.这让我明确了以后学习的目标,在不断学习软件编程的同时,也应该继续软件测试的深入学习.。
使用JUnit Jupiter进行Java单元测试的新特性和实现方式
![使用JUnit Jupiter进行Java单元测试的新特性和实现方式](https://img.taocdn.com/s3/m/3c43db77f6ec4afe04a1b0717fd5360cba1a8d92.png)
使用JUnit Jupiter进行Java单元测试的新特性和实现方式在软件开发过程中,单元测试是不可或缺的一环。
它可以帮助开发人员在代码编写过程中及时发现和修复潜在的问题,提高代码质量和可靠性。
而JUnit Jupiter 作为Java中最常用的单元测试框架之一,为开发人员提供了一系列新的特性和实现方式,使得单元测试更加简洁、灵活和易于维护。
一、JUnit Jupiter的新特性1. 注解模型JUnit Jupiter引入了一种新的注解模型,使得编写测试用例更加灵活。
与传统的@Test注解不同,JUnit Jupiter提供了一系列的注解,如@DisplayName、@Nested、@RepeatedTest等,可以根据需要对测试用例进行更加精细的控制和组织。
@DisplayName注解可以为测试用例指定一个更加友好和描述性的名称,方便开发人员理解和识别。
@Nested注解可以将测试用例进行分组,使得测试用例的结构更加清晰和易于管理。
@RepeatedTest注解可以指定一个测试用例被重复执行的次数,方便进行性能和稳定性测试。
2. 断言模型JUnit Jupiter提供了一套更加强大和丰富的断言模型,使得编写断言更加简洁和可读。
传统的断言方式通常使用JUnit的assertEquals、assertTrue等方法,而JUnit Jupiter引入了一系列新的断言方法,如assertAll、assertThrows、assertTimeout等。
assertAll方法可以同时执行多个断言,如果其中一个断言失败,会将所有失败的断言结果一起报告,方便开发人员查看。
assertThrows方法可以验证代码是否抛出了指定的异常,方便进行异常处理的单元测试。
assertTimeout方法可以限制代码执行的时间,方便进行性能和并发测试。
3. 扩展模型JUnit Jupiter引入了扩展模型,使得开发人员可以自定义扩展来满足特定的测试需求。
junit用法
![junit用法](https://img.taocdn.com/s3/m/e4767ce777eeaeaad1f34693daef5ef7ba0d12ee.png)
junit用法Junit是一个Java语言的单元测试框架,它可以帮助开发人员进行单元测试。
下面详细介绍Junit的用法。
一、安装Junit1. 下载Junit jar包;2. 将jar包添加到项目中;3. 导入Junit相关类。
二、编写测试用例1. 创建一个Java类,命名为TestXXX,XXX为被测试的类名;2. 在TestXXX类中编写测试方法,方法名必须以“test”开头;3. 使用Assert断言来判断测试结果是否正确。
三、运行测试用例1. 在Eclipse中右键点击TestXXX类,选择“Run As”->“JUnit Test”即可运行所有的测试方法;2. 在命令行中进入项目根目录,执行命令“javaorg.junit.runner.JUnitCore TestXXX”,即可运行所有的测试方法。
四、常用注解1. @Test:标记一个方法为测试方法;2. @Before:在每个@Test方法之前执行;3. @After:在每个@Test方法之后执行;4. @BeforeClass:在所有@Test方法之前执行,只会执行一次;5. @AfterClass:在所有@Test方法之后执行,只会执行一次。
五、常用断言1. assertEquals(expected, actual):判断两个值是否相等;2. assertArrayEquals(expected, actual):判断两个数组是否相等;3. assertTrue(condition):判断条件是否为真;4. assertFalse(condition):判断条件是否为假;5. assertNull(object):判断对象是否为null;6. assertNotNull(object):判断对象是否不为null。
六、运行顺序1. 每个测试方法都会在一个新的实例中运行;2. 测试方法的执行顺序是不确定的,应该保证每个测试方法都是独立的。
单元测试--Junit测试私有方法
![单元测试--Junit测试私有方法](https://img.taocdn.com/s3/m/02cbc57749d7c1c708a1284ac850ad02de800791.png)
单元测试--Junit测试私有⽅法⼀般情况下私有⽅法只能在所属类的内部进⾏调⽤,在类外则⽆法通过对象.⽅法名的⽅法调⽤私有⽅法。
在Junit中对私有⽅法进⾏测试有两种⽅法:⽅法⼀:使⽤PowerMock测试私有⽅法:Object result = Deencapsulation.invoke(mockClass, methodName, parameter1, parameter2....)其中:1.mockClass:该参数是需要被调⽤⽅法所属的类,该类需要被mock2.methodName:该参数是需要被调⽤的私有⽅法的名称3.parameter:该参数为调⽤⽅法的参数的值4.Deencapsulation.invoke():返回结果类型,与调⽤⽅法(即测试⽅法)的返回类型⼀致⽅法⼆:通过反射机制测试私有⽅法:Method method = 类对象.getclass().getDeclaredMethod(methodName, 参数类型1, 参数类型2....)Object result = method.invoke(类对象, 参数值1, 参数值2....)其中:1类对象:调⽤私有⽅法所属类的对象2.methodName:调⽤的私有⽅法名3.method.setAccessible(true)指定私有⽅法可测试权限常⽤反射法测试:eg1:@Testpublic void add2(){Calculator c=new Calculator();Class<Calculator> cal=Calculator.class;try {Method method=cal.getDeclaredMethod("add2", new Class[]{int.class,int.class});method.setAccessible(true);Object obj=method.invoke(c, new Object[]{1,2});Assert.assertEquals(3, obj);} catch (Exception e) {Assert.fail("-----");}}eg2:/*** 测试私有权限⽅法前,修改⽅法权限** @param target ⽬标对象* @param functionName 字段的名称* @param parameters 值*/public static Object setAccess4PrivateFunction(Object target, String functionName, Object[] parameters) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {Class<?> clazz = target.getClass();if (parameters == null || parameters.length == 0) {Method method = clazz.getDeclaredMethod(functionName);method.setAccessible(true);return method.invoke(target);}int count = parameters.length;Class<?>[] paraClass = new Class[count];int index = 0;for (Object para : parameters) {Class<?> tmpClass = para.getClass();if (tmpClass.equals(LinkedHashMap.class) || tmpClass.equals(HashMap.class)) {paraClass[index] = Map.class;} else {paraClass[index] = tmpClass;}index++;}Method method = clazz.getDeclaredMethod(functionName, paraClass);method.setAccessible(true);return method.invoke(target, parameters);}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JUnit java单元测试首先须导入JUnit包:所在项目右击->Build Path->Add Libraries ->选择JUnit->选择一个版本->Finish一.手动生成1.测试方法,必须符合下列条件*方法必须声明成:public,void*JUnit3方法名必须以test开头,JUnit4则不需要*方法无参数如:JUnit3:Public void testAdd(){}JUnit4:@Test (org.junit.Test)Public void AddTest(){}2. JUit3 与 JUit4的区别源码和测试代码分开放在不同的Source Folder,测试代码所在的包名最好和源码中的包名一一对应。
JUnit3测试方法中的类必须继承TestCase (junit.framwork.TestCase);而JUnit4类则不需要继承任何类,但在方法前须加上注解@Test(org.junit.Test)此测试方法,标注该程序是以JUnit的方式来运行的。
JUit3:在方法前加上TestCase类的方法setUp(),在执行每一次测试方法之前都会被调用,可把在测试方法中都需要的程序放在这里;最后加上tearDown()方法,在执行每一次方法后都会被调用。
JUit4:与JUit3不同的是,在JUit4中是在方法前用注解@BeforeClass:globeInit(),无论执行多少测试方法,它只执行一次,且运行在最前@Before:把方法注解成Before,init()与JUit3中的setUp()方法作用一样@After:把方法注解成After,destroy()与JUit3中的tearDown ()方法作用一样@AfterClass:无论执行多少测试方法,它只执行一次,且运行在最后下面分别以JUit3和JUit4为例子来运行测试:例1.JUit3源代码:package com.sinyee.unit;public class ArrayUnit {/***传入一个数组,返回该数组的最大值*@param array*@return*/public int getMaxValue(int[] array) throws Exception { if (array==null) {throw new NullPointerException("空指针异常");}if (array.length == 0) {throw new ArrayIndexOutOfBoundsException("数组不能为空!");}int temp = array[0];for (int i = 1; i < array.length; i++) {if (temp < array[i]) {array[i] = temp;}}// 取出该数组的最大值return temp;}Junit3测试代码package com.sinyee.unit;import junit.framework.TestCase;public class ArrayTest extends TestCase {//设置类的成员变量,可以供所有的方法调用private ArrayUnit aUnit;/***该setUp()方法为TestCase里面的方法*作用:在每次执行调用测试方法之前,会先调用该setUp方法*/@Overrideprotected void setUp() throws Exception { //实例化数组工具对象aUnit=new ArrayUnit();System.out.println("setUp()");}/***求数组最大值的测试用例1:数组不为空*/public void testGetMaxValue1(){//定义一个array数组int[] array={40,3,2,6,9,30,4};try {//调用求数组最大值方法int actual = aUnit.getMaxValue(array);//期望值为40int expected=40;//断言actual==expectassertEquals(expected, actual);} catch (Exception e) {e.printStackTrace();fail();}}*求数组最大值的测试用例2:数组为空*/public void testGetMaxValue2(){//定义一个array数组int[] array={};//实例化数组对象ArrayUnit aUnit=new ArrayUnit();try {//调用求数组最大值方法aUnit.getMaxValue(array);//若上面的方法有抛出异常,则fail()方法将不会被调用fail();} catch (Exception e) {//断言该异常为ArrayIndexOutOfBoundsException该类型的异常,且消息为"数组不能为空!"assertEquals(ArrayIndexOutOfBoundsException.class, e.getClass());assertEquals("数组不能为空!", e.getMessage());}}/***求数组最大值的测试用例3:空指针异常*/public void testGetMaxValue3(){int[] array=null;ArrayUnit aUnit=new ArrayUnit();try {aUnit.getMaxValue(array);fail();} catch (Exception e) {//断言该异常为NullPointerException该类型的异常,且消息为"空指针异常"assertEquals(NullPointerException.class,e.getClass());assertEquals("空指针异常", e.getMessage());}}@Overrideprotected void tearDown() throws Exception {System.out.println("tearDown()");}}例2.JUnit4测试代码:package com.sinyee.unit;import static org.junit.Assert.*;import org.junit.Before;import org.junit.Test;/***Junit4的测试类该类无需继承任何类,测试方法无需与test开头*/public class ArrayUnitTest {private ArrayUnit aUnit;/***把方法注解为@Before,效果与JUnit3中的setUp()方法一样*/@Beforepublic void init() {aUnit = new ArrayUnit();}/*** Junit4须加上@Test此测试方法,标注该程序是以Junit的方式来运行的*测试数组不为空*/@Testpublic void getMaxValueTest() {int[] array = { 3, 6, 5, 7, 4, 8, 12, 0 };try {int actual = aUnit.getMaxValue(array);int expected = 12;// 断言expected==actual// Assert.assertEquals(expected, actual);// 或者也可以直接通过静态导入该Assert类的所有方法 import staticorg.junit.Assert.*;assertEquals(expected, actual);} catch (Exception e) {e.printStackTrace();fail();}}/***测试数组长度为零时,断言会抛出异常*@throws Exception*/@Test(expected=ArrayIndexOutOfBoundsException.class) public void getMaxValueTest2() throws Exception { int[] array = {};aUnit.getMaxValue(array);}/***测试数组为null时,断言会抛出空指针异常*@throws Exception*/@Test(expected=NullPointerException.class)public void getMaxValueTest3() throws Exception { int[] array = null;aUnit.getMaxValue(array);}}/***当测试用例还未完成时,可用注解@Ignore来标记这测试用例还未完成*/@Test@Ignorepublic void getMaxValueTest4() {}/***把方法注解为@After,效果与JUnit3中的tearDown()方法一样*/@Afterpublic void destroy() {}3.术语Errors程序出错Failures断言失败4.批量测试例1.JUnit3package com.sinyee.unit;import junit.framework.Test;import junit.framework.TestCase;import junit.framework.TestSuite;public class AllTest extends TestCase {//若要实现批量测试的话,须加上一个方法public static Test suite(){TestSuite tSuite=new TestSuite();//添加计算器测试类tSuite.addTestSuite(CalculateTest.class);//添加数组最大值测试类tSuite.addTestSuite(ArrayTest.class);//添加堆栈测试类tSuite.addTestSuite(StackTest.class);return tSuite;}}例2.JUnit4package com.sinyee.unit;import org.junit.runner.RunWith;import org.junit.runners.Suite;import org.junit.runners.Suite.SuiteClasses;@RunWith(Suite.class)@SuiteClasses( { CalculateUtilTest.class, ArrayUnitTest.class, StackUtilTest.class, StringUtilTest.class })public class TestAll {}二.自动生成选择所要测试的类,右击->New->选择Java下的Junit项目中的Junit Test Case,根据自己所要测试的版本类型选择进行操作.三.WEB测试需在lib包下拷入几个jar包:httpunit-1.7文件夹的lib目录下的httpunit.jar以及jars目录下的。