Junit单元测试
## 测试分类
黑盒测试,白盒测试
黑盒测试,不需要写代码,给输入值,看程序是否能够输出期望的值
白盒测试,需要写代码的,关注程序的具体执行流程
Junit使用
是白盒测试
### 步骤
#### 1,定义一个测试类(测试用例)
建议:
• 测试类名:被测试的类名Test
• 包名:xxx.xxx.xx.test
#### 2,定义测试方法:最好可以独立运行
建议:
方法名:test测试的方法名
返回值:viod
参数:空参
#### 3,建议加@Test注释(加这个得加上junit依赖)
#### 4,判断结果,
控制台 红的失败
绿的成功。
这里的话,一般用断言操作来处理
代码:
Assert.assertEquals(期望结果,运算结果)
public class Junit {
public long add(long a , long b){
return a+b;
}
}
public class Test1 {
@Test
public void yunsuan(){
---->这里 Assert.assertEquals(4, new Junit().add(1, 2));
}
}
控制台结果:
java.lang.AssertionError:
预期:4
实际:3
<点击以查看差异>
两个注解
初始化方法:
用于所有资源申请,所以测试方法在执行前都会先执行该方法
加上注解
@Before
释放资源的方法:
在所有测试方法执行完后,都会自动执行该方法
加上注解
@After
反正就是
先在测试方法(Test注解)前执行有Before注解方法,在测试方法(Test注解)后执行After注解的方法
这些都是自动执行的
提醒:
用其他方法调用测试方法的时候,测试方法就是普通方法。
在直接编码时,所有测试方法都会走一遍,来个例子吧
public class Test1 {
int b=0;
static Test1 t=new Test1();
public long add(long a , long b){
return a+b;
}
public long jianfa(long a , long b){
return a-b;
}
public long chengfa(long a ,long b){
return a*b;
}
@Before
public void before(){
System.out.println("我先执行,算个1-1的减法吧:1-1="+t.jianfa(1,1));
}
@Test
public void yunsuan(){
System.out.println("测试第一次加法对不对:2是否等于1+2:"+(2==t.add(1,2)));
b++;
if (b!=10){
t.yunsuan2();
}
}
@Test
public void yunsuan2(){
System.out.println("测试第二次加法对不对:2是否等于1+1:"+(2==t.add(1,1)));
b++;
if (b<=20){
t.yunsuan();
}
}
@After
public void after(){
System.out.println("我最后执行个2*3的乘法:2*3="+t.chengfa(2,3));
}
}
以上代码会把@Test1跑完,再跑@Test2,运算结果会是这样