Spring Reactive 单元测试
测试挂起函数
测试方法通过 runBlock 包裹挂起函数:
@Test
fun test(): Unit = runBlocking {
// ...
}注入测试依赖
- 通过在依赖对象前添加
@Autowired注解注入:
@SpringBootTest
class UserRepositoryTest(
@Autowired private val mongoTemplate: ReactiveMongoTemplate
) {
// ...
}- 使用在测试类中添加
@TestConstructor注解注入:
@SpringBootTest
@TestConstructor(autowireMode = TestConstructor.AutowireMode.ALL)
class UserRepositoryTest(
private val mongoTemplate: ReactiveMongoTemplate
) {
// ...
}在非静态方法中使用 @AfterAll 和 @BeforeAll
Spring Projects in Kotlin == Spring Framework
默认情况下 Junit5 必须在静态方法中使用 @AfterAll 和 @BeforeA 如:
class ApplicationTest {
companion object {
@JvmStatic
@BeforeAll
fun beforeAll() {
// ...
}
@JvmStatic
@AfterAll
fun afterAll() {
// ...
}
}
}这样对于需要引入依赖的 Spring 程序来说没法使用,可以增加@TestInstance 注解解决:
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
class ApplicationTest {
@BeforeAll
fun beforeAll() {
// ...
}
@AfterAll
fun afterAll() {
// ...
}
}