每个 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 中提到的所有测试套件之前运行一次
使用pytest和unittest runner从两个终端运行测试套件,但仅显示unittest runner结果并执行一次