0

我正在使用测试容器对 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;
}

扩展测试容器的类

public class DiscountUpdateListenerTest extends TestContainerFixture {
}

因为我正在.withReuse(true);为所有其他测试类重用测试容器。如果我在集成测试运行时禁用.withReuse(false)每个类,则会创建容器,这需要更长的时间来执行测试。

所以,为了重用同一个容器,我使用了这个特性.withReuse(true)。由于容器在那里停留的时间更长。所以我想每 1-2 小时取出一次容器

4

1 回答 1

2

Testcontainers 的重用功能目前处于 alpha 状态,不支持清理容器(尚)。

Kevin Wittek(Testcontainers 的核心维护者之一)最近分享了即将清理容器和资源以用于可重用容器的信息(在此处的实时聊天中查看他的消息)。

目前,我建议创建一个基本的 bash/CMD 脚本并让一个 cron 作业触发它:

docker system prune -f --volumes
于 2021-08-25T12:48:14.530 回答