Junit单元测试
测试代码是否达到预期运行结果
测试方法主要有两类:黑盒测试及白盒测试。
- 黑盒测试:不关注代码本身,只关注输入数据是否得到预期结果,无需编写代码。
- 白盒测试:关注程序本身流程、逻辑,需要编写代码。
Junit的使用
步骤:
-
定义一个测试类。
- 类名:
<被测试的类名>Test
- 测试类所在包:
xxx.xxx.xxx.test
- 类名:
-
定义测试方法:
- 无参、无返回值、独立运行。
- 方法名:
test<被测试的方法名>
- 测试方法内部使用
Assert
(断言)判断被测试方法是否输出预期的值:如使用Assert.assertEquals(<expected>,<actual>)
方法判断。
-
加上注解
@Test
,并引入Junit
。
使用断言的方法判断被测试程序是否符合预期时
- 如果符合预期,下方控制台无任何输出结果,均出现绿色的
√
; - 如果不符合预期,下方控制台则会报错。
@Before
注解说明某一方法是:该测试类在所有测试方法执行前会自动执行的方法
通常用以资源申请、对象创建等前置操作。
@After
注解说明某一方法是:该测试类在所有测试方法执行后会自动执行的方法
通常用以资源释放等后置操作。
举例
创建一个用以计算的工具类Calculate
package run.heat.junit.tools;
public class Calculate {
public int add(int a, int b) {
return a + b;
}
public int sub(int a, int b) {
return a - b;
}
}
创建测试类
package run.heat.junit.test;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import run.heat.junit.tools.Calculate;
public class CalculateTest {
Calculate calculate;
@Before
public void init() {
calculate = new Calculate();
System.out.println("init...");
}
@Test
public void testAdd() {
int a = 10, b = 5, rs = 15;
Calculate calculate = new Calculate();
System.out.println("add...");
int add = calculate.add(a, b);
Assert.assertEquals(rs, add);
}
@After
public void destroy() {
System.out.println("destroy...");
}
}
运行结果:
init...
add...
destroy...