Java开发者测试
实际代码编写中所用到的单元测试框架基本是Junit结合Mockito使用
Junit
spring自带的单元测试框架,涵盖了大部分功能
通过@Test注解即可直接生成测试用例
@Test
public void calTest(){
Assert.assertEquals(junit.cal(1,2),3);
}
@BeforeAll
表明在所有测试方法执行之前执行的方法,且只执行一次
@AfterAll
表明在所有测试方法执行之后执行的方法,且只执行一次
@BeforeEach
表明在每个测试方法执行之前都会执行的方法
@AfterEach
表明在每个测试方法执行之后都会执行的方法
class JunitTest {
private Junit junit = new Junit();
@Test
public void calTest(){
Assert.assertEquals(junit.cal(1,2),3);
System.out.println("exeuting...");
}
@BeforeEach
public void beforeExe(){
System.out.println("before executing...");
}
@AfterEach
public void afterExe(){
System.out.println("after executing...");
}
@BeforeEach
public void beforeEachExe(){
System.out.println("before each executing...");
}
@AfterEach
public void afterEachExe(){
System.out.println("after each executing...");
}
}
//超过指定时间报错
@Timeout(value = n,unit = TimeUnit....)
断言
junit中最为关键的部分,用来验证测试代码的预期结果
assertEquals
判断两个对象或两个原始类型是否相等
assertNotEquals
判断两个对象或两个原始类型是否不相等
assertSame
判断两个对象引用是否指向同一个对象
assertNotSame
判断两个对象引用是否指向不同的对象
assertTrue
判断给定的布尔值是否为 true
assertFalse
判断给定的布尔值是否为 false
assertNull
判断给定的对象引用是否为 null
assertNotNull
判断给定的对象引用是否不为 null
异常校验
@Test
public void exceptionTest(){
Assert.assertThrows("no exception",Exception.class,() -> {
junit.divide(1,0);
});
System.out.println("exception");
}
前置条件
如果不满足条件无法继续
Assumptions.assumeTrue(条件);
参数化测试
@ParameterizedTest //定义参数化测试
@NullSource //允许参数为null
@EmptySource //允许参数集合为空
@ValueSource(类型 = {参数1,参数2}) //一个数组
测试方法...