如何在Kotlin中用JUnit 5创建一个TestContainers基础测试类?

问题描述 投票:3回答:1

我试图在Kotlin、Spring Data Neo4j、Spring Boot和JUnit 5中使用Neo4j TestContainers。我有很多测试需要使用测试容器。理想情况下,我希望避免在每个测试类中复制容器的定义和配置。

目前,我有这样的情况。

@Testcontainers
@DataNeo4jTest
@Import(Neo4jConfiguration::class, Neo4jTestConfiguration::class)
class ContainerTest(@Autowired private val repository: XYZRepository) {

    companion object {
        const val IMAGE_NAME = "neo4j"
        const val TAG_NAME = "3.5.5"

        @Container
        @JvmStatic
        val databaseServer: KtNeo4jContainer = KtNeo4jContainer("$IMAGE_NAME:$TAG_NAME")
                .withoutAuthentication()
    }

    @TestConfiguration
    internal class Config {
        @Bean
        fun configuration(): Configuration = Configuration.Builder()
                .uri(databaseServer.getBoltUrl())
                .build()
    }

    @Test
    @DisplayName("Create xyz")
    fun testCreateXYZ() {
        // ...
    }

}

class KtNeo4jContainer(val imageName: String) : Neo4jContainer<KtNeo4jContainer>(imageName)

我怎样才能提取数据库服务器的定义和@TestConfiguration? 我尝试了不同的方法来创建一个基类,并让ContainerTest对其进行扩展,但都没有成功。根据我的理解,静态attriubutes在Kotlin中是不被继承的。

kotlin spring-data-neo4j testcontainers
1个回答
0
投票

我有同样的问题(让Spring Boot + Kotlin + Testcontainers一起工作),在网上搜索了(相当)一段时间后,我发现了这个不错的解决方案。https:/github.comlarmictestcontainers-junit5。. 你只需要把它采用到你的数据库中。

© www.soinside.com 2019 - 2024. All rights reserved.