kotlintest如何测试Spring Boot应用程序

时间:2018-11-13 08:47:26

标签: spring-boot kotlin kotlintest

Spring启动应用程序的集成测试始终总是首先启动Web服务器。

spring boot测试的最简单测试如下所示,如何使用kotlintest迁移它?

@ExtendWith(SpringExtension::class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class ReportApplicationTests {

    @Test
    fun `Server can be launched`() {
    }

}

2 个答案:

答案 0 :(得分: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对其进行全局配置。 KotlinTest Documentation

中介绍了ProjectConfig

答案 1 :(得分:1)

这是我的设置方法:首先,请确保引用JUnit 5而不是4,例如我已经在dependencies的{​​{1}}部分中找到了这一点:

build.gradle

也将此添加到testImplementation "org.springframework.boot:spring-boot-starter-test:${springBootVersion}" testImplementation "org.jetbrains.kotlin:kotlin-test" testImplementation "org.jetbrains.kotlin:kotlin-test-junit" testImplementation "io.kotlintest:kotlintest-extensions-spring:3.1.10" testImplementation 'io.kotlintest:kotlintest-runner-junit5:3.1.10' testImplementation "org.junit.jupiter:junit-jupiter-api:5.3.1" testImplementation "org.junit.jupiter:junit-jupiter-engine:5.3.1"

build.gradle

然后在集成测试类中进行以下操作(注意覆盖test { useJUnitPlatform() } ,否则将无法正常工作):

listeners

很显然,您可以将import org.springframework.boot.test.context.SpringBootTest import io.kotlintest.spring.SpringListener @SpringBootTest( webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = [MyApplication::class]) class MyTestStringSpec : StringSpec() { override fun listeners() = listOf(SpringListener) init { // Tests go in here } } 替换为其他任何Kotlin测试testing styles,例如StringSpecFunSpec