Java开发者测试:Junit5
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();@Testpublic void calTest(){Assert.assertEquals(junit.cal(1,2),3);System.out.println("exeuting...");}@BeforeEachpublic void beforeExe(){System.out.println("before executing...");}@AfterEachpublic void afterExe(){System.out.println("after executing...");}@BeforeEachpublic void beforeEachExe(){System.out.println("before each executing...");}@AfterEachpublic void afterEachExe(){System.out.println("after each executing...");}
}
//超过指定时间报错
@Timeout(value = n,unit = TimeUnit....)
断言
junit中最为关键的部分,用来验证测试代码的预期结果
assertEquals判断两个对象或两个原始类型是否相等assertNotEquals判断两个对象或两个原始类型是否不相等assertSame判断两个对象引用是否指向同一个对象assertNotSame判断两个对象引用是否指向不同的对象assertTrue判断给定的布尔值是否为 trueassertFalse判断给定的布尔值是否为 falseassertNull判断给定的对象引用是否为 nullassertNotNull判断给定的对象引用是否不为 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}) //一个数组
测试方法...