问题标签 [testcontainers-junit5]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2526 浏览

spring-boot - 如何使用 junit5 和 testcontainers 测试存储库?

我有一个示例项目,我在其中尝试不同的技术。

我有以下设置:

  • Spring Boot 2.3.4.RELEASE
  • 飞路 7.0.1
  • 测试容器 1.15.0-rc2
  • Junit 5.7.0

如何使用 testcontainer-junit5 测试存储库层?

我现在拥有的代码示例CompanyRepositoryTest.java

添加时@SpringBootTest,我需要设置所有上下文并遇到一些应用程序加载上下文问题?

问题是,任何人都可以揭开@TestContainers注释的神秘面纱吗?在测试存储库时使用它的最佳实践或正确方法是什么?

0 投票
0 回答
139 浏览

spring-boot - 使用 Kotlin、JUnit 和 Spring Boot 使测试容器可重新启动

我正在尝试将可重新启动的 Testcontainers 集成到使用 JUnit 和 Kotlin 的应用程序中。

我目前这样做的方式是在我设置容器和 Spring Boot 属性的每个测试套件中都有一个伴随类,如下所示:

但由于它位于编译为静态块的块中,因此容器不会在每次测试时重新启动(根据我观察到的行为和官方文档)。

当我尝试将容器放在伴随对象块之外时,Spring 无法正确设置动态道具并抛出java.lang.IllegalStateException: Mapped port can only be obtained after the container is started.

试图达到我的结果@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)对行为没有影响。

0 投票
1 回答
418 浏览

mongodb - Quarkus中如何清除测试环境TestContainer

我正在努力使用 TestContainers 删除保存在容器中的所有数据。我能够从 MongoDB 测试容器创建和检索数据,但是每个测试用例都应该是自包含的,并且一个测试不应该影响另一个测试。如果我无法以某种方式“清除”我的数据库,那么在测试“A 类”之后,在执行“B 类”测试时,我的数据库中将会出现一些“脏”。

在 Spring Boot 环境中,我可以使用以下任一方法轻松处理这些情况:

或者

我知道我可以在容器上执行一些命令,这是我到目前为止所做的:

试图简单地执行 ashow dbs并没有让我得到任何东西。

我可以连接到容器并手动执行db.collection.drop()吗?如果是的话,我很乐意接受一些提示和片段。(Obs:任何这样做的 API 都会更好)。

0 投票
1 回答
324 浏览

docker-compose - 测试容器:无法初始化 DockerComposeContainer

我正在使用 testcontainers ( https://www.testcontainers.org ) 来执行集成测试。测试用例需要一个 Oracle 数据库和一个兼容 Eclipse Microprofile 的平台,在我的例子中是 Wildfly 20。我有以下 docker-compose.yaml 文件:

当使用 docker-compose 命令或 docker-compose-maven-plugin 运行时,此 docker-compose 文件可以正常工作并按预期工作。

为了使用相同的 docker-compose.yaml 文件进行集成测试,我使用以下代码:

上面的代码使用 DockerCompose 类,它是 DockerComposeContainer 的包装器,如下所示:

尝试运行集成测试会引发以下异常:

即使在调试模式下也没有任何附加信息。上面引用的第 26 行如下:

所以这里提出了例外:

谁能让我知道我在这里做错了什么?

提前谢谢了。

西摩

0 投票
1 回答
236 浏览

docker - 没有这样的图像:testcontainers/byvren8fgzpzaxgy:latest

当我尝试为 Kafka 容器编写集成测试时,在尝试构建项目后出现此错误。我不知道出了什么问题。

我正在使用版本 1.15.1 org.testcontainers maven 依赖项。对出了什么问题有什么建议吗?

0 投票
1 回答
4418 浏览

docker-compose - 运行测试套件时测试容器初始化错误

我有多个测试类运行相同的 docker-compose 和testcontainer

initializationError尽管每个测试在单独执行时都通过了,但该套件失败了。

这是第二次测试期间发生的堆栈跟踪的相关部分。 ./gradlew e2e:test -i

在我看来,第二个测试并没有等待第一个关闭以前的容器。

这里是所有测试继承的基类。它负责启动容器。

0 投票
1 回答
980 浏览

spring-boot - spring boot kafka 在使用带有 kafka、zookeeper、模式注册表的测试容器时因“代理可能不可用”而失败

我在测试代码中运行了如下测试容器。

它工作得很好。但是当我尝试使用上面的 testcontainer 配置运行 spring boot 测试时出现了问题,因为 testcontainer 动态生成代理端口,但 NetworkClient 不断使用 localhost:9092 访问代理,即使我动态覆盖@SpringBootTest 代码上的属性,如下所示

下面是 AdminClientConfig 日志启动时间,它显示bootstrap.servers = [localhost:56001]了 testcontainer 动态绑定的端口。

即使我这样设置,它仍然会尝试连接到 localhost:9092,如下所示。

下面是docker ps运行 spring boot 测试的结果。

我尝试使用 docker compose 模块运行 testcontainers,但它有同样的问题。我究竟做错了什么?请帮忙。

0 投票
0 回答
181 浏览

spring-boot - 在 Testcontainer Spring 引导测试中模拟服务

我在春天很新,我现在面临一个测试问题:

我有以下服务:

我在另一个类中使用这个服务类:

我尝试编写一个测试,但 MyService 始终为空..

如何将模拟 MyService 注入测试容器?

谢谢!

0 投票
1 回答
390 浏览

spring-boot - 为什么 TestContainer 使用错误的 URL(缺少 'tc')?

我打算使用Testcontainer(版本 1.15.2)和 Kotlin 1.4.31 测试数据库访问,我有一个测试类......

...但我总是遇到一个例外:

我有一个application.yaml包含:

我想知道为什么 TestContainers 徒劳地寻找jdbc:postgresql尽管我把 jdbc: tc :postgresql 放在 application.yaml

我更喜欢使用构造函数自动装配,但我没有得到它,因为 Kotlin 总是抱怨:

我无法通过构造函数自动装配或在现场使用@Autowired 来GenericJpaDao获取实例。WebTestClient


根据 WebTestClient 回答:这可以通过使用来实现@AutoConfigureWebTestClient

0 投票
2 回答
369 浏览

micronaut - Micronaut 重用测试容器

我正在使用 Micronaut 2.4.0 并使用 testContainers 进行 SQL Server 集成测试。

这是我的 gradle.build

这是用于测试的 application.yml

这些是唯一的变化,micronaut 处理测试容器的创建和启动。

问题

对于每个测试类,它都会创建新容器。测试的大部分时间是在容器创建中。

有没有办法可以重复使用容器?(清除数据库可能仍然可以)