不使用单元测试是怎么样的
比如下面这个计算器类我要测试add方法是否正确
/*
* 计算器类
* */
public class Calculator {
public int add (int a,int b){
return a+b;
}
}
那么就这么写呗,如果正确的话,那么就删掉下面的代码
public class main {
public static void main(String[] args) {
Calculator c=new Calculator();
int res=c.add(1,1);
System.out.println(res);
}
}
有什么问题?
- 1 测试代码不能保留
- 2 测试纯肉眼观测,容易出错
单元测试@Test
在方法上添加@Test即代表为测试方法,可单独执行 注意要引入junit的包
public class CalculatorTest {
/*
* 测试add方法
* */
@Test //加上Test代表为测试方法
public void testAdd(){
Calculator c=new Calculator();
int res=c.add(1,1);
System.out.println(res);
}
}
打印输出还是容易看错,一般使用断言来判断
Assert.assertEquals(2,res) //(期望值,实际值)
编辑器会自动告诉你是否成功,而不用肉眼观测,且可保留测试代码
使用建议
- 1 返回值为void (只是测试不需要返回值,你也不用)
- 2 参数为空 (只是测试不需要参数,你也不会去调用)
- 3 命名为test+要测试的方法
其他 @Before和@After
对于这些测试方法可能每次执行都会有相同的操作,比如IO流中每次都要开关资源。对于这些操作可以使用Before和After。
- @Before 测试方法执行之前会先执行这个方法
- @After 测试方法执行之后会执行这个方法
public class CalculatorTest {
@Before
public void init(){
System.out.println("初始化资源");
}
@After
public void close(){
System.out.println("释放资源");
}
@Test
public void testAdd(){
System.out.println("测试方法testAdd");
}
}