与Junit5,spring和docker集成测试

时间:2018-01-22 15:33:44

标签: docker spring-test junit5

我想用junit5-docker和Spring测试@Sql注释运行测试来对postgresql本机查询进行单元测试(我不能在这里使用HSQL DB)。

我的问题是使用Spring @Sql注释插入的脚本是在docker容器创建结束之前执行的。

我无法找到一种可接受的方式来订购这些元素,以便在容器可用后立即执行@Sql。

当然我们可以在DataSource创建中使用Thread.sleep(...),但这不是我想做的......

编辑: 测试例(Kotlin):

@Docker(image = "postgres:9.6", ports = [Port(exposed = 5433, inner = 5432)],

    environments = [
        Environment(key = "POSTGRES_DB", value = "nv2test"),
        Environment(key = "POSTGRES_USER", value = "postgres"),
        Environment(key = "POSTGRES_PASSWORD", value = "postgres")],

    waitFor = WaitFor("LOG:  database system is ready to accept connections"),
    newForEachCase = false)
@Sql(scripts = ["/data/clear.sql", "/data/operations.sql"])
@ExtendWith(SpringExtension::class)
@TestExecutionListeners(SqlScriptsTestExecutionListener::class, DependencyInjectionTestExecutionListener::class)
@ContextConfiguration(classes = [DockerContainerConfig::class])
class OperationSearchRepositoryImplTest{
    @Test
    fun shouldFindByExample() {
         // Some test...
    }
}

DockerContainerConfig是一个Spring配置类,它只为postgres定义一个DataSource。

任何帮助将不胜感激!

0 个答案:

没有答案