1.测试平台Junit
- springboot新版使用junit
- 只需要标注一个注解@SpringBootTest
- 然后方法中标注@Test即可
- 以前springboot的使用
- 现在整合使用后
- 只需要编写测试方法@Test
- 写测试的逻辑,整个类具有spring的功能,比如事务(测试完成后会自动回滚),自动装配等
2.测试常用注解
- @DisplayName(测试名称)即会显示在控制台哪个测试方法
- @BeforeEach每个测试方法之前运行的
@BeforeAll 所有测试方法之前(直接类上运行,为静态方法) - @AfterEach 每个测试方法结束以后运行
@AfterAll 所有测试方法之后(直接类上运行,为静态方法) - @DIsabled 直接类上运行时,此方法不执行
- @TimeOut 声明此方法几毫秒后方法超时异常
- @ExtendWith (复合注解)
- @RepeatedTest(测试很多次)
3.测试重要注解
①断言(assertions)
- 可以判断哪个测试没有通过(会有详细的测试报告,哪些方法成功,哪些方法因为什么失败)
- 断言代码(前面断言失败,后面都不会断言)
@Test
@DisplayName("simple assertion")
public void simple() {
assertEquals(3, 1 + 2, "simple math");
assertNotEquals(3, 1 + 1);
assertNotSame(new Object(), new Object());
Object obj = new Object();
assertSame(obj, obj);
assertFalse(1 > 2);
assertTrue(1 < 2);
assertNull(null);
assertNotNull(new Object());
}
@Test
@DisplayName("assert all")
public void all() {
assertAll("Math",
() -> assertEquals(2, 1 + 1),
() -> assertTrue(1 > 0)
);
}
4.其他
① assumptions(前置条件)
- 不满足前置条件,而是终止执行,而不是抛出失败
- 示例(前置条件是跳过,而断言是错误)
@Test
@DisplayName("simple")
public void simpleAssume() {
assumeTrue(Objects.equals(this.environment, "DEV"));
assumeFalse(() -> Objects.equals(this.environment, "PROD"));
}
②嵌套测试
- 嵌套测试情况下 外层Test不能驱动内层的全部Test运行
- 内层的可以驱动外层的
③参数化测试
@ParameterizedTest
@ValueSource(strings = {"one", "two", "three"})
@DisplayName("参数化测试1")
public void parameterizedTest1(String string) {
System.out.println(string);
Assertions.assertTrue(StringUtils.isNotBlank(string));
}