junit
- 单元测试是针对最小的功能单元编写测试代码
- Java程序最小的功能单元是方法
- 单元测试就是针对单个Java方法的测试
注意事项:
- 测试方法必须使用 @Test 修饰
- 测试方法必须使用 public void 进行修饰,不能带参数
- 一般使用单元测试会新建一个 test 目录存放测试代码,在生产部署的时候只需要将 test 目录下代码删除即可
- 测试代码的包应该和被测试代码包结构保持一致
- 测试单元中的每个方法必须可以独立测试,方法间不能有任何依赖
- 测试类一般使用 Test 作为类名的后缀
- 测试方法使一般用 test 作为方法名的前缀
JUnit的设计:
- TestCase: 一个TestCase表示一个测试
- TestSuite: 一个TestSuite包含一组TestCase,表示一组测试
- TestFixture: 一个TestFixture表示一个测试环境
- TestResult: 用于收集测试结果
- TestRunner: 用于运行测试
- TestListener: 用于监听测试过程,收集测试数据
- Assert: 用于断言测试结果是否正确
要进行测试的类:
public class SumUtil {
public static int sum1(int i, int j) {
return i+j;
}
public static int sum2(int i, int j, int k) {
return i+j+k;
}
}
测试类1
import org.junit.Test;
public class App01 {
@Test
public void testSum1() {
int result = SumUtil.sum1(1, 2);
assert (result == 3);
}
@Test
public void testSum2() {
int result = SumUtil.sum1(4, 2);
assert (result == 3);
}
}
测试类2
import org.junit.Test;
public class App02 {
@Test
public void testSum2() {
int result = SumUtil.sum1(4, 2);
assert (result == 3);
}
}
assert:断言result等于3是否正确
如何对多个测试类一并进行测试:
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({App01.class,App02.class,App03.class})
public class TestSuiteApp {
}
@RunWith指定了Suite类,说明这个TestSuiteApp类是一个套件。通过@Suite.SuiteClasses指定了要执行的测试类(这些类中的所有测试单元都会执行)
我们可以看出哪个没有通过测试