首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在与夸克集成测试期间重用容器?

如何在与夸克集成测试期间重用容器?
EN

Stack Overflow用户
提问于 2022-03-30 15:32:50
回答 2查看 1.4K关注 0票数 2

目前,我有几个运行良好的集成测试,但是我正在使用注释@QuarkusTestResource在夸克启动之前通过测试容器启动容器,并通过重写扩展QuarkusTestResourceLifecycleManager的容器类的开始方法来调整属性以适应随机测试容器端口。

为了进行一些优化,例如,我希望重用启动kafka的容器,因为启动它需要6-8秒,并在我的几个集成测试中重用它。我一直没能这么做。因为Quarkus管理生命周期,每次它停止,在每个测试类之间,它也停止每个容器。我尝试将来自测试容器的单例容器与Quarkus测试资源混合使用,但它不起作用。下面是我的一个集成测试类开始的片段:

代码语言:javascript
复制
@QuarkusTest
@Tag(INTEGRATION_TEST)
@QuarkusTestResource(value = KafkaNode.class, restrictToAnnotatedClass = true, parallel = true)
class MyIntegrationTest { ... }

我的KafkaNode课程:

代码语言:javascript
复制
public class KafkaNode implements QuarkusTestResourceLifecycleManager {
    static KafkaContainer kafka = new KafkaContainer(DockerImageName.parse("confluentinc/cp-kafka:6.2.1"))
            .withNetworkAliases("kafkaNode")
            .withNetwork(CommonNetwork.getInstance());

    @Override
    public Map<String, String> start() {
        kafka.start();
        return Collections.singletonMap("myapp.kafka.servers",
                kafka.getBootstrapServers());
    }

    @Override
    public void stop() {
        kafka.close();
    }
}

我对重用甚至重做测试的想法持开放态度,这样我就可以以另一种方式重用容器。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-01 15:30:41

您可以通过.withReuse(true)对容器使用实验性的可重用模式。

请注意,为了使其发挥作用,您需要:

  • testcontainers.reuse.enable=true文件中设置~/.testcontainers.properties属性
  • 而不是调用.close() (它以任何方式以编程方式停止容器)

一旦您相应地设置了所有内容,您的容器应该

  • 不再在测试运行结束时停止/垃圾收集。
  • 在下一次测试运行时再次被捕获--避免新的容器启动。

请注意,所有运行时修改(配置、数据、主题等)在下一次测试时还会在那里。您需要采取适当的措施来避免不确定的测试,比如在每次测试运行中使用不同的/随机的主题名称。

还要注意,当您完成容器时,需要手动停止/删除它。Testcontainers将不再为您移除容器。

您还可以阅读本文,其中描述了如何从spring获得灵感:用于快速集成测试的带有测试容器的重用容器

票数 1
EN

Stack Overflow用户

发布于 2022-06-03 20:10:49

当使用多个QuarkusTestProfile时,测试上下文将被完全重新处理,因此即使是静态变量也不会被保留。我还没有找到一种方法来使用例如,当使用不同的QuarkusTestProfiles时,在一个测试中跨所有QuarkusTest的单个数据库。即使容器似乎存在于测试运行边界之间,我也不能在以后的测试运行中引用它来确定映射的端口,等等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71680113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档