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));
}