【发布时间】:2019-05-09 13:35:58
【问题描述】:
我有一个 docker DB 设置方法,目前位于@BeforeAll。
目前,构造如下
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public DockerConstructorTest{
@BeforeAll
public static void setup(){
...
CreateContainer
...
}
@AfterAll
public static void done(){
...
Stop & Remove Container
...
}
}
有多个测试类都扩展了这个Test超类,每个测试类将构建一个容器并在完成后将其删除。因此,maven 管理 docker 会耗费大量时间。 (创建和删除)
我的问题是whether there's better way to deal with it
我可能想要实现的理想情况是,这个容器的创建和删除只在@SpringBootTest 启动之前运行一次,它将与所有测试类共享。同时,它也不会阻止其他开发者为某些角落场景创建新的容器。
我有一些不完整的想法:
- 在 SpringBoot 主类中添加 Constructor 触发器,如果它已启动 通过测试,运行 Docker 容器构造函数。但这也意味着我 在 Main Class 中添加一些测试相关的代码,使它们耦合。 个人讨厌这种情况发生
- 覆盖 SpringBootTest。压倒一切让我觉得我是否应该这样做。
请分享您的绝妙想法,如果可以的话,我将不胜感激 将解决这个问题,或这个问题的一部分。
【问题讨论】:
标签: java spring-boot junit spring-boot-test docker-java