单元测试是被广大猿类使用的测试包,当你在跟团队做 java 开发时,往往面临三种选择:
- 把整个 project 运行一下测试自己写的功能,可能会出现 project 启动慢,或者别人的代码有坑,导致 project 无法正常 run 的情况
- 使用 junit ,可以帮你节省大量的时间,首先,运行 junit 不需要运行整个 project 节省时间,其次,junit 可以只测试某段代码,或者某几段代码的功能,因此可以减少其他代码的影响
- 不测试就提交,呵呵…
(1)@Test
1
2
3
4Test
public void testMethod0(){
System.out.println("test method 0");
}用@Test修饰用于单元测试的方法。
(2)@Before
1
2
3
4Before
public void beforeMethod0(){
System.out.println("before method 0");
}被@Before修饰的方法会在@Test修饰的方法之前被执行;多个@Before修饰方法的执行顺序和书写顺序没有关系。
(3)@After
1
2
3
4After
public void afterMethod(){
System.out.println("after method");
}被@After修饰的方法会在@Test修饰的方法之后执行;多个@After的执行顺序和书写顺序无关。
注意: 当有多个@Before和多个@After修饰方法时 @Before修饰方法的执行顺序是名称的倒序 @After修饰方法的执行顺序是名称的顺序
(4)@Ignore
1 |
|
被@Ignore修饰的@Test方法不会在单元测试中被执行;@Ignore注解对@Before和@After修饰的方法不产作用。
(5)@BeforeClass
1 |
|
被@BeforeClass修饰的方法会在junit的测试类实例化之前执行,所以必须保证@BeforeClass此之前就已经被编译,通常用的方法就是加static,如果@Test所修饰的method不是static的话。
(6)@AfterClass
1 |
|
被@AfterClass修饰的方法会在junit的测试类
(7)@Parameters & @Parameter
指定一些测试方法的参数
1 | class DataOpration{ |
(8)exception
1 |
|
使用junit测试抛出异常的方法有三种: 1、@Test(expected = XXXException.class) 2、Assert.assertThat(XXXException.getMessage(), expected value)); 3、@Rule ExpectedException expect expectMessage 注意:null这样的值要特殊处理(可见上述代码)
(9)Assert
断言,像 assertEquals、assertFalse、assertNotSame、assertNull、assertThat 等,具体用法见下
1 | /** |
(10)spring & junit
spring和junit的结合
1 |
|
maven dependency
1 | <dependencies> |
project url:https://github.com/Knight-JNXU/JavaFundation/tree/JunitStudy