Junit的概念
JUnit断言
JUnit断言包含在Assert类中,这个类提供了许多有用的断言方法编写测试用例。失败的断言会被记录
断言机制:将程序预期的结果与程序运行的最终结果进行对比,确保对结果的可预知性
如
//检查两个变量或者等式是否平衡
void assertEquals(boolean expected, boolean actual)
//检查两个变量或者等式是否平衡
void assertFalse(boolean condition)
//检查对象不是空的
void assertNotNull(Object object)
//检查对象是否为空
void assertTrue(boolean condition)
//在没有报告的情况下使测试不通过
测试类原则
- 测试方法上必须使用@Test进行修饰
- 测试方法必须使用public void 进行修饰,不能带任何的参数
- 新建一个源代码目录来存放测试代码,将测试代码和项目业务代码分开
- 测试类所在的包名应该和被测试类所在的包名一致
- 测试单元中的每个方法必须可以独立测试,测试方法间不能有任何依赖
- 测试类使用Test作为类名后缀(非必须)
- 测试方法使用Test作为方法名的前缀(非必须)
Junit使用
注解
@Test
- (expected = XXException.class)如果程序的异常和XXException.class一样,则测试通过
- (timeout = 100)如果程序的执行能在100毫秒内完成,则是通过
@Ignore
- 被忽略的测试方法:加上之后,暂时不运行此段代码
@Before
- 每一个测试方法之前运行
@After
- 每一个测试方法之后运行
@BeforeClass
- 方法必须是静态方法,即static,所有测试方法开始之前运行。
@AfterClass
- 方法必须是静态方法,即static,所有测试方法结束之后运行。
一个单元测试类的执行顺序为:
@BeforeClass、@Before、@Test、@After、@AfterClass
每个测试方法调用顺序:
@Before、@Test、@After
@BeforeClass和@AfterClas对于比较昂贵的资源的分配或者释放来说是很有效的,因为他们只会在类中被执行一次。相比之下对于那些需要在每次运行之前都要初始化或者在运行之后都需要被清理的资源来说使用@Before和@Afrer同样是一个比较好的选择。
时间测试
@test(timeout=1000)
如果超过改时间,Junit将它标记为失败
异常测试
@Test(expected = NullPointerException.class)
是否抛出了想要得到的异常