每个 Spek 套件运行一次数据库

Posted

技术标签:

【中文标题】每个 Spek 套件运行一次数据库【英文标题】:Run database once per Spek suite 【发布时间】:2018-12-06 15:21:28 【问题描述】:

某些测试需要运行数据库,例如,使用测试容器库。显然启动它需要时间。

有没有办法在跨多个文件的整个 Spek 套件中只执行一次此操作?文档没有说明这一点。

有人知道为什么没有实施吗?

【问题讨论】:

【参考方案1】:

这个答案不是特定于 Spek 的,但是 Testcontainers 对象公开了一个简单的 start()stop() 方法,这意味着如果您不想要,您不必依赖测试框架来控制您的容器生命周期到。您可以在与测试类分开的静态对象中创建一个容器,然后根据需要在所有测试中访问它。

请看示例here(Java 示例如下 sn-p):

static 
    GenericContainer redis = new GenericContainer("redis:3-alpine")
            .withExposedPorts(6379);
    redis.start();

我认为 Kotlin 中的等价物应该很简单,就像 object(或类似的)。

【讨论】:

以上是关于每个 Spek 套件运行一次数据库的主要内容,如果未能解决你的问题,请参考以下文章

Ktor:使用 JUnit 测试类的 Spek/KotlinTest 测试 REST 端点

TestNG 在运行 pom.xml 中提到的所有测试套件之前运行一次

特定测试套件的 Maven 运行命令

使用pytest和unittest runner从两个终端运行测试套件,但仅显示unittest runner结果并执行一次

从云套件中快速加载所有记录,避免限制结果

如何让我的 Visual Studio 测试套件 Web 测试迭代我的数据源?