这里是以junit4为演示,引入和注解,不用再自己继承测试类了,非常方便
一、Junit常用的注解
注解 | 解释 |
---|---|
@Before | 和setUp()方法功能一样,在每个测试方法之前执行 |
@After | 和tearDown方法功能一样,在每个测试方法之后执行 |
@BeforeClass | 在所有方法执行之前执行(注意是在一个测试类的范围) |
@AfterClass | 在所有的方法执行之后执行(注意是在一个测试类的范围) |
@Test | 一个正常的测试方法的入口,分别这个方法是否是测试方法 |
@Test(timeout = xxx) | 设置当前测试方法是否能在设置的时间内执行完,否则返回错误 |
@Test(expected = Exception.class) | 是否有一场抛出,类型为Exception.class |
@Ignore | 注释掉一个测试方法或者一个类,不会被执行 |
下面解释一下@Before、@After、@BeforeClass、@AfterClass的区别(特别注意的是这是在一个测试类里的,不是所有测试类里的)
上面这张图就是执行顺序。但是不要以为@Before和@After在一个类里就可以有多个,其实是这个类里的@Before和@After在每个@Test执行前后都执行一次。而@BeforeClass和@AfterClass在在这个类被执行时才执行一次,当然如果你只执行此类中的一个方法,那@BeforeClass和@AfterClass也会执行一次相当于 @BeforeClass->@Before->@Test->@After->@AfterClass
所以在@BeforeClass里面执行的是在所有测试方法执行之前需要的准备工作
@Before里是每个方法执行前需要准备的工作,
@After和@AfterClass与之对应。
对于Test里的就是个性化的单元测试了,如果你涉及到身份的不同,可以写在@Test里,如果对于身份的获取可以单独写一个私有的方法,让@Test调用或者整个测试类继承基类,基类就是身份的获取
二、Assert/fail有哪些方法
方法 | 解释 |
---|---|
assertEquals(boolean expected, boolean actual) | 检查两个变量或者等式是否平衡 |
void assertTrue(boolean expected, boolean actual) | 检查条件为真 |
void assertFalse(boolean condition) | 检查条件为假 |
void assertNotNull(Object object) | 检查对象不为空 |
void assertNull(Object object) | 检查对象为空 |
void assertSame(boolean condition) | 检查两个相关对象是否指向同一个对象 |
void assertNotSame(boolean condition) | 检查两个相关对象是否不指向同一个对象 |
void assertArrayEquals(expectedArray, resultArray) | 检查两个数组是否相等 |
void fail() | 测试失败 |
上面所有的方法都可以加一个String Message的参数,这个参数的含义是错误的信息,自己定义的,这样便于我们在控制台观察错误信息的要点