使用@Before和@After:
一.JUnit使用@Before和@After:
在@Before方式中初始化测试资源
在@After方式中释放测试资源
二.JUnit对于每个@Test方法:
1.实例化CalculatorTest
2.执行@Before方法
3.执行@Test方法
2.执行@After方法
三.使用@Before和@After可以保证:
1.单个@Test方法执行前会创建新的XxxTest实例
实例变量的状态不会传递给下一个@Test方法
2.单个@Test方法执行前后会执行@Before和@After
四.@BeforeClass和@AfterClass静态方法:
1.@BeforeClass静态方法初始化的对象只能存放在静态字段中
2.静态字段的状态会影响到所有@Test
五.初始化测试资源称为Fixture:
1.@Before:初始化测试对象,例如:input = new FileInputStream();
2.@After:销毁@Before创建的测试对象,例如:input.close();
3.@BeforeClass:初始化非常耗时的资源,例如:创建数据库
4.@AfterClass:清理@BeforeClass创建的资源,例如:删除数据库
异常测试
一.对可能抛出的异常进行测试:
1.异常本身是方法签名的一部分:
public static int parselnt(String s) throws NumberFormatException
测试错误的输入是否导致特定的异常:
Integer.parselnt(null)
Integer.parselnt("")
Integer.parselnt("xyz")
二.使用expected测试异常:
测试异常可以使用@Test(expected=Exception.class)
参数化测试
一.如果待测试的输入和输出是一组数据:
1.可以把测试数据组织起来
2.用不同的测试数据调用相同的测试方法
二.参数化测试要求
1.参数必须由静态方法data()返回
2.返回类型为Collection<Object[]>
3.静态方法必须标记为@Parameters
4.测试类必须标记为@RunWith(Parameterized.class)
5.构造方式参数必须和测试参数对应
超时测试
一.为JUnit的单个测试设置超时:
超时设置为1秒:@Test(timeout=1000)
二.总结
1.@Test(timeout=1000)可以设置超时
2.timeout单位是毫秒
3.超时测试不能取代性能测试和压力测试