1. 测试分类
黑盒测试:不需要写代码;给一个输入值,看是否输出期望值
白盒测试:需要写代码;关注程序具体的运行流程
单元测试就是白盒测试的一种
2. Junit使用
- 定义测试类(建议:test包/xxxTest)
- 定义测试方法(建议:void testxxx() ),加注解@Test表示可以独立运行
注解@Test需要导入Junit依赖
以上图片中的情况,需要再执行下:
- 写测试方法(抵用需要测试的方法),最后不用return,用断言结果
断言:Assert.assertEquals (期望值, 结果值);
- 运行这个测试方法(方法前面的▶️按钮),绿色表示成功,红色表示失败
- 注解类还可以写:初始化方法和释放资源方法
初始化方法(建议:init):加注解@Before,用于资源申请,所有测试方法在执行前都会先执行该方法
释放资源方法(建议close):加注解@After,所有测试方法执行完后都会执行该方法
3. 一个单元测试的例子
//类
package cn;
public class Calculation {
public int add(int a, int b){
return a+b;
}
public int sub(int a, int b){
return a-b;
}
public int mul(int a, int b){
return a*b;
}
public int div(int a, int b){
return a/b;
}
}
//单元测试类
package test;
import cn.Calculation;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
public class CalculationTest {
@Before
public void init(){
}
@After
public void close(){
}
@Test
public void testAdd(){
Calculation cal=new Calculation();
int r=cal.add(1,0);
Assert.assertEquals(1,r);
}
@Test
public void testSub(){
Calculation cal=new Calculation();
int r=cal.sub(1,0);
Assert.assertEquals(1,r);
}
@Test
public void testMul(){
Calculation cal=new Calculation();
int r=cal.mul(1,0);
Assert.assertEquals(0,r);
}
@Test
public void testDiv(){
Calculation cal=new Calculation();
int r=cal.div(1,0);
Assert.assertEquals(1,r);
}
}