
一,环境建设
Junit已经是非常习惯于使用Eclipse开发平台的通用插件. 在Eclipse开发平台中,构建Junit测试环境非常方便.
1. 在Eclipse上创建一个项目,任何Java项目都可以.
2. 介绍Junit的库库,选择Junit4. 如下图所示:
3. 创建一个新的Java类,以演示Junit4类的自动生成. Java代码如下:
[java]
packagecom.hy; publicclassDemo {publicvoidmethod1(){System.out.println(“ method1”);} publicvoidmethod2(){System.out.println(“ method2”);} publicvoidmethod3(){System.out.println (“ method3”);}}
4. 右键单击此类上的“新建”,然后选择“ JUnit测试用例”以自动生成相应的测试类,如下图所示:
4. 这样,可以自动生成相应的测试类,并发出测试类代码:

[java]
packagecom.hy; importstaticorg.junit.Assert. *; importorg.junit.After; importorg.junit.AfterClass; importorg.junit.Before; importorg.junit.BeforeClass; importorg.junit.Test; publicclassDemoTest {@BeforeClasspublicstaticvoidsetUpBeforeClass( )throwsException {} @ AfterClasspublicstaticvoidtearDownAfterClass()throwsException {} @ BeforepublicvoidsetUp()throwsException {} @ AfterpublicvoidtearDown()throwsException {} @ TestpublicvoidtestMethod1(){fail(“ Notyetimplemented”);} @@ TestpublicvoidtestMethod2(){失败“} @ TestpublicvoidtestMethod3(){fail(“ Notyetimplemented”);}}
5. 这样就完成了测试环境的构建过程. 最后要做的是根据实际业务需求为测试类中的测试方法编写单元测试代码,直到对其进行调整.
第二,基本规则
从上面的演示中可以看到,测试类名称通常以Test结尾junit测试,而测试方法名称以test开头. 这也是Junit的基本命名约定.
三张Junit笔记
这次我们的目标是Junit4版本,并且注释仅在Junit4版本中. 以前的版本中没有注释功能. 注释开发基本上被认为是一种出色的设计,因此在编写单元测试用例时,请尝试尽可能地理解和使用注释.
@Test: 使用此批注的方法是一种测试方法,可以在自动操作期间识别并执行
包含两个参数: expected = XXXException.class预期异常
timeout = xxx设置程序运行的超时时间
@忽略: 忽略的测试方法
@Before: 在每种测试方法之前运行
@After: 在每种测试方法之后运行
@BeforeClass: 在所有测试开始之前运行

@AfterClass: 在所有测试开始后运行
以上是Junit 4的关键注释. 如果您熟练地使用这些注释,将来编写测试用例肯定会事半功倍.
注意: @Before和@BeforeClass之间的区别
@Before将在每种方法之前添加,也就是说,多次@Test将执行多次.
@BeforeClass仅在所有测试之前执行,仅执行一次. 并且@BeforeClass修改的方法必须是公共静态方法(public static).
@After和@AfterClass相似
每个测试类中的四个注释不能重复使用,并且方法只能选择四个注释之一.
四个基础写作
1,setUp(),tearDown(),setUpBeforeClass(),tearDownAfterClass()这四个方法实际上是对应的@ Before,@ BeforeClass,@ After,@ AfterClass这四个注解,在Junit4中使用注解时实际上,它可以替代这四种方法的功能,但是这四种方法是历史遗留方法,您可以考虑使用它们,也可以直接使用批注.
2. 断言是单元测试用例的核心,建议使用静态导入.
3. 通常建议要测试的对象是静态的.
4. 测试方法要求: 使用@Test批注,方法名称是任意的,返回值必须为void,没有参数,并且可以声明异常(请参阅演示代码).
5. 夹具方法的作用
前面介绍的@ Before,@ BeforeClass,@ After和@AfterClass注释修改方法是Fixture方法,这些方法必须在某些阶段调用,如注释功能所示.

@Before和@After修改方法的一种用法是“恢复”测试对象上的操作,例如成员变量回归,回滚等. 目的是消除@Test方法之间的耦合. 它也可以用于打印日志.
@BeforeClass修改方法可以设计为加载一些费时费力的操作,例如文件流读取,连接等,然后释放@AfterClass中的相应资源.
6. 时限测试
@Test(timeout = 1000)超时单位为毫秒
测试是否有死循环器是一个实时用例,非常方便且非常有用.
7. 测试异常
@Test(expected = XXXException.class)XXXException是声明性异常
用于验证声明性异常,请注意此测试的含义: 发生了预期的异常,称为正常,如果没有异常,Junit会报告错误并认为这是异常. 这个描述有点chat不休,请考虑一下.
8. 跑步者
类注释@RunWith,指定其他类可以更改测试类的行为
9. 参数化测试
主要用于相同的功能,但要进行多组参数测试. 开发步骤如下:
1)参数化测试类不同于普通测试类. 要使用特殊的Runner,需要将类注释更改为@RunWith(Parameterized.class)
2)定义测试类的成员变量,一个放置测试参数,另一个放置由参数产生的预期结果

3)定义测试数据收集方法public static Collection data(){...},请注意junit测试,此方法需要用@Parameters修饰(数据格式是二维数组)
4)用参数定义构造函数,定义数据集时要注意构造函数的参数顺序
其他类似于普通测试
注意: 如果有两个测试数据,则该类下的所有@Test方法将执行两次,因此,不应将参数化的测试类与其他@Test放置在一起. 参数化测试方法通常建议建立单独的类.
演示代码如下:
[java]
//指定@ RunWith @ RunWith(Parameterized.class)publicclassParamTest {//定义成员变量,i是测试参数,j是测试结果privateinti; privateintj; //构造函数publicParamTest(inti,intj){super(); this.i = i; this.j = j;} //测试数据集合,注意使用的注释,数据结构和顺序@ParameterspublicstaticCollectiondata() {returnArrays.asList(newObject [] [] {{1,2},{3,4},{4,6}});} @ TestpublicvoidtestMethod1(){System.out.println(i); System.out. println(j); //简单测试,仅测试参数加1不会等于预期结果Assert.assertEquals(i + 1,j);}}
预期的执行结果是前两组参数测试正确,而最后一组测试不正确. 运行后的结果是:
执行结果与预期结果一致,好
10. 包装测试
集中测试类并运行以提高测试效率. 代码如下:
[java]
@RunWith(Suite.class)@ Suite.SuiteClasses({DemoTest.class})publicclassModuleTest {publicModuleTest(){// TODOAuto-GeneratedConstructorstub}}
1)@ Suite.SuiteClasses包含需要打包和测试的类
2)此类可以为空,建议类名以模块名称+ Test结尾,例如ModuleTest.java
以上是Junit4的最基本用法. 我相信掌握这些对于编写常规测试用例并不困难. 同样,Junit具有更多有趣的功能,等待我们挖掘...
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-277748-1.html
这水军水平太差
每个造型都好看啊啊啊