代码之家  ›  专栏  ›  技术社区  ›  Kane

kotlintest如何测试spring启动应用程序

  •  0
  • Kane  · 技术社区  · 6 年前

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

    spring引导测试的最简单测试如下所示,如何使用kotlintest进行迁移?

    @ExtendWith(SpringExtension::class)
    @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
    class ReportApplicationTests {
    
        @Test
        fun `Server can be launched`() {
        }
    
    }
    
    2 回复  |  直到 6 年前
        1
  •  2
  •   Yoni Gibbs    6 年前

    我是这样设置的:首先,确保引用JUnit5而不是4,例如,我在 dependencies 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"
    

    还要将此添加到 格雷德尔先生 :

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

    显然,你可以替换 StringSpec 任何其他Kotlin测试 testing styles FunSpec , ShouldSpec

        2
  •  6
  •   LeoColman    3 年前

    更新:从版本4.3+开始,有些内容发生了更改。

    KotlinTest更名为Kotest。这个 SpringExtension 是与spring集成的类。 The documentation 关于如何使用它非常简单。

    Kotest 依赖关系,您还应该添加 弹簧延伸

    testImplementation("io.kotest.extensions:kotest-extensions-spring:1.0.0")
    

    然后包括 弹簧延伸 给你的分机。从那时起,你可以使用一切 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

    基本上,除了 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" {
    
            }
        }
    }
    

    您不需要添加 ProjectConfig . ProjectConfig在中进行了解释 KotlinTest Documentation

    推荐文章