Junit的使用
JUnit 是一个Java编程语言的单元测试框架。JUnit 在测试驱动的开发方面有很重要的发展,是起源于JUnit 的一个统称为xUnit 的单元测试框架之一。
一、Junit使用的一些建议
- 测试方法上必须使用@Test进行修饰
- 测试方法必须使用public void 进行修饰,不能带任何的参数
- 新建一个源代码目录来存放我们的测试代码,即将测试代码和项目业务代码分开
- 测试类所在的包名应该和被测试类所在的包名保持一致
- 测试单元中的每个方法必须可以独立测试,测试方法间不能有任何的依赖
- 测试类使用Test作为类名的后缀(不是必须)
- 测试方法使用test作为方法名的前缀(不是必须
测试代码和项目代码分开
结构应如下:包名要一致;最好以Test作为测试类后缀;最好以test作为测试方法前缀。
//测试类
import org.junit.Assert;
import org.junit.Test;
public class CalculateTest {
Calculate cal = null;
@Test
public void testAdd(){
cal = new Calculate();
int result = cal.add(3,2);
Assert.assertEquals("加法有问题",5,result);
/**
* "加法有问题":期望值和实际值不一致时,显示的信息
* 5是期望值
* result是实际值
*/
}
}
二、测试失败的两种情况
注意:测试用例是用来达到测试想要的预期结果,而不能测试出程序的逻辑错
-
failure错误
-
error错误
说明:
- Failure一般由单元测试使用的断言方法判断失败所引起的,这经表示测试点发现了问题,就是说程序输出的结果和我们预期的不一样。
- Error是由代码异常引起的,它可以产生于测试代码本身的错误,也可以是被测试代码中的一个隐藏的bug。
三、Junit的运行流程
涉及到主要5种注解:@BeforeClass,@Before,@Test,@After,@AfterClass
- @BeforeClass修饰的方法会在所有方法被调用前被执行,而且该方法是静态的,所以当测试类被加载后接着就会运行它,而且在内存中它只会存在一份实例,它比较适合加载配置文件,进行初始化等等
- @AfterClass所修饰的方法会在所有方法被调用后被执行,通常用来对资源的清理,如关闭数据库的连接
- @Before和@After会在每个测试方法的前后各执行一次
四、Junit常用注解
- @Test:将一个普通的方法修饰成为一个测试方法
- @Test(expected=XX.class):如果没有抛出指定类,则会报failure
- @Test(timeout=毫秒):如果没有再指定的时间执行完毕,就会报failure
- @BeforeClass:它会在所有的方法运行前被执行,static修饰
- @AfterClass:它会在所有的方法运行结束后被执行,static修饰
- @Before:会在每一个测试方法被运行前执行一次
- @After:会在每一个测试方法运行后被执行一次
- @Ignore:所修饰的测试方法会被测试运行器忽略
- @RunWith:可以更改测试运行器
org.junit.runner.Runner