在 JUnit 5 所有 class 测试完成后,测试容器未从 docker 中删除
Test containers not deleted from docker after JUnit 5 all class tests completed
我正在使用测试容器对 micronaut 应用程序进行集成测试和端到端测试。
这里是测试容器的配置
@Testcontainers
public abstract class TestContainerFixture {
protected static final GenericContainer mongoDBContainer;
protected static final Map<String, Object> properties;
static {
mongoDBContainer = new GenericContainer(DockerImageName.parse("mongo:4.0.10"))
.withExposedPorts(27017)
.withReuse(true);
mongoDBContainer.start();
properties = Map.of("mongodb.uri",
String.format("mongodb://%s:%s", mongoDBContainer.getContainerIpAddress(), mongoDBContainer.getMappedPort(27017)));
}
protected ApplicationContext applicationContext;
}
A class 扩展测试容器
public class DiscountUpdateListenerTest extends TestContainerFixture {
}
因为我正在使用 .withReuse(true);
将测试容器重新用于所有其他测试 class。如果当集成测试为 运行 时我在每个 class 上禁用 .withReuse(false)
,则创建的容器需要更长的时间来执行测试。
因此,为了重复使用同一个容器,我使用了 .withReuse(true)
功能。由于容器在那里停留了更长的时间。所以我想每 1-2 小时移除一次容器
Testcontainers 的重用功能目前处于 alpha 状态,不支持清理容器(还)。
Kevin Wittek(Testcontainers 的核心维护者之一)最近分享了清理容器和可重用容器资源即将到来的信息(请在实时聊天中查看他的消息here)。
目前,我建议创建一个基本的 bash/CMD 脚本并让 cron 作业触发它:
docker system prune -f --volumes
我正在使用测试容器对 micronaut 应用程序进行集成测试和端到端测试。
这里是测试容器的配置
@Testcontainers
public abstract class TestContainerFixture {
protected static final GenericContainer mongoDBContainer;
protected static final Map<String, Object> properties;
static {
mongoDBContainer = new GenericContainer(DockerImageName.parse("mongo:4.0.10"))
.withExposedPorts(27017)
.withReuse(true);
mongoDBContainer.start();
properties = Map.of("mongodb.uri",
String.format("mongodb://%s:%s", mongoDBContainer.getContainerIpAddress(), mongoDBContainer.getMappedPort(27017)));
}
protected ApplicationContext applicationContext;
}
A class 扩展测试容器
public class DiscountUpdateListenerTest extends TestContainerFixture {
}
因为我正在使用 .withReuse(true);
将测试容器重新用于所有其他测试 class。如果当集成测试为 运行 时我在每个 class 上禁用 .withReuse(false)
,则创建的容器需要更长的时间来执行测试。
因此,为了重复使用同一个容器,我使用了 .withReuse(true)
功能。由于容器在那里停留了更长的时间。所以我想每 1-2 小时移除一次容器
Testcontainers 的重用功能目前处于 alpha 状态,不支持清理容器(还)。
Kevin Wittek(Testcontainers 的核心维护者之一)最近分享了清理容器和可重用容器资源即将到来的信息(请在实时聊天中查看他的消息here)。
目前,我建议创建一个基本的 bash/CMD 脚本并让 cron 作业触发它:
docker system prune -f --volumes