Spring Boot应用的集成测试总是先启动Web服务器。
spring boot测试最简单的测试如下,如何改用kotlintest迁移呢?
@ExtendWith(SpringExtension::class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class ReportApplicationTests {
@Test
fun `Server can be launched`() {
}
}
最佳答案
更新:从 4.3+ 版本开始,有些地方发生了变化。
版本 4.3+(更新)
KotlinTest 更名为 Kotest。 SpringExtension
是与 spring 集成的类。 The documentation关于如何使用它非常简单。
除了Kotest
依赖,还应该添加SpringExtension
:
testImplementation("io.kotest.extensions:kotest-extensions-spring:1.0.0")
然后将 SpringExtension
包含到您的扩展中。从那时起,您可以使用 Spring Boot
在测试中提供的一切,例如 ContextConfiguration
和其他:
@SpringBootTest
class MyTestSpec : FunSpec() {
override fun extensions() = listOf(SpringExtension)
init {
test("I'm inside a Spring context!") { }
}
}
版本 3.3.2(很旧)
Kotlintest 有一个 very nice guide关于如何设置 Spring Extension 以测试 Spring Framework。
基本上,除了 KotlinTest
依赖,你还要添加它的 Spring Extension
:
testImplementation ("io.kotlintest:kotlintest-runner-junit5:3.3.2") // KT dependency
testImplementation("io.kotlintest:kotlintest-extensions-spring:3.3.2") // KT Spring Extensions
然后将 SpringListener
和 SpringBootTest
包含到您的代码中:
import org.springframework.boot.test.context.SpringBootTest
import io.kotlintest.spring.SpringListener
@SpringBootTest
class SpringExample : FreeSpec() {
override fun listeners() = listOf(SpringListener)
init {
"Verify context loads" {
}
}
}
您不需要将 SpringListener
添加到您创建的每个测试中,您可以使用 ProjectConfig
对其进行全局配置。 ProjectConfig 在 KotlinTest Documentation 中进行了解释
关于spring-boot - kotlintest如何测试spring boot应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53277045/