JUnit4—基本概念
1、开发环境和运行环境搭建
将junit-4.x.jar 添加到classpath
2、准备被测试类
被测试类随便写一个简单的功能,让我们可以示例JUnit4的用法即可。
3、准备测试类
1、类仍然是普通的类
一般都放在与被测试类同包下,类名为被测试类名前加上Test
2、测试方法的声明遵循以下原则
1、必须是public non-static 无参
2、在方法头上加上@Test
3、测试方法内部的写法
1、猜测一个结果
2、运行被测试代码,获得实际结果
3、使用断言来判断猜测结果和实际结果是否相等
4、JUnit4—helloworld
简单期间我们的HelloWorld就写一个除法运算如:
Java代码:
Divide类
package com.jhaso.main;
public class Divide { public int devide(int a, int b){ return a/b; } }
|
DivideTest类
package com.jhaso.main;
import org.junit.Assert; //注意:导入的时候,同类不同包。 import org.junit.Test; public class DivideTest { //1、必须是public non-static 无参 //2、在方法头上加上@Test @Test public void test1(){ Divide divide= new Divide(); //1、猜测一个结果 final int expected = 3; //2、运行被测试代码,获得实际结果 final int actual = divide.devide(6, 2); //3、使用断言来判断猜测结果和实际结果是否相等 Assert.assertEquals(expected, actual); }
|
@Test public void test2(){ Divide divide= new Divide(); //1、猜测一个结果 final int expected = 3; 相等 Assert.assertEquals(expected, actual); } @Test public void test3(){ Divide divide= new Divide(); //1、猜测一个结果 final int expected = 3; //2、运行被测试代码,获得实际结果 final int actual = divide.devide(7, 0); //3、使用断言来判断猜测结果和实际结果是否相等 Assert.assertEquals(expected, actual); } }
//2、运行被测试代码,获得实际结果 final int actual = divide.devide(7, 2); //3、使用断言来判断猜测结果和实际结果是否 |
【补充】
「著名的绿红条」
* 1)如果你直接运行DivideTest的话,默认是把所有的方法都运行,只要有一个方法出错就会显示红条,所有的方法都正确的时候才会显示绿条
* 2)测试的方法之间是独立的,也就是说test3这个方法及时放到test2之前,在测试的时候是不会影响test2方法的测试。及测试跟方法顺序无关。
5、JUnit4—夹具
初始化和销毁方法
@Before:初始化方法
@After:释放资源
@BeforeClass:针对所有测试,只执行一次,且必须为static void
@AfterClass:针对所有测试,只执行一次,且必须为static void
测试方法
@Test:测试方法,还可以声明只接受哪个异常作为正确结果
@Test(timeout=XXX) :该元数据传入了一个时间(毫秒)给测试方法,如果测试方法在限定的时间之内没有运行完,则测试失败。
@Ignore:忽略某个测试方法
一个JUnit4 的单元测试用例执行顺序为:
@BeforeClass-->
@Before --> @Test --> @After --> 【第一个测试方法】
@Before --> @Test --> @After --> 【第二个测试方法】
@Before --> @Test --> @After --> 【第三个测试方法】
@AfterClass
每一个测试方法的调用顺序为:
@Before --> @Test --> @After
【补充】
@Before常用在读取配置文件获取数据库上,@After常用在关闭数据流,关闭数据库上。
@Before 和 @After 标识的方法只能各有一个,这个相当于取代了Junit 4以前版本中的setUp 和 tearDown 方法,方法名也可以自己定义了。
1、JUnit4—断言
1、结果状态验证:验证结果是否与预期的一样
Assert.assertEquals验证是否相等
2、防卫断言:验证调用功能前所作的各项假设。
Assert.assertTrue(list.isEmpty()) /assertFalse假设结果true/false
3、差值断言
Assert.assertEquals(sizeBefore+1,list.size());
4、交互断言:验证代码与其协作者对象的交互行为是否正确
Assert.assertTrue(list.contains(aaa));
2、JUnit4—测试套件
测试套件:一组测试用例
package com.jhaso.main;
import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.junit.runners.Suite.SuiteClasses;
@RunWith(Suite.class) @SuiteClasses({MyAddTest.class, DivideTest.class}) public class MyTestSuite {
}
|
【注意】观察套件和测试用例的关系。
--测试套件里不仅可以放测试用例,还可以放更小的测试套件。
3、JUnit4—与maven
安装插件
将获得的m2eclipse.rar解压到eclipse的dropins文件夹下,重启
eclipse,就可以看到maven插件了。
新建项目
选择【New】->【Project】->【Maven Project】,选择create a simple
project,填入GAV,选择打包方式jar/war。
如果要新建web工程,请选择打包方式为war,为了让项目能在eclipse相关
的tomcat下运行,还需要一点点麻烦的配置。选择项目的属性,添加dynamic web project支持【project facets】;再次选择项目的属性,重整项目的部
【deployment assembly】。这部分操作非常非常麻烦,请注意看老师的演示。
添加依赖
在项目上右击【maven】->【add dependency】。
运行命令行
在项目上右击【Run as】->【Maven test】
生成junit报告
在项目上右击【Run as】->【Maven build】,在Goals:中输入
clean test site surefire-report:report
点击【run】后查看target文件夹下,你会发现在classes和test-class文件之外多了很多东西如:site、surefire-reports文件夹。那些就是写测试报告。