问题标签 [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 投票
1 回答
887 浏览

postgresql - 等待容器在测试容器中启动,使用 GenericContainer 自定义 PostgreSQL 映像

我正在开发基于 Testcontainers 解决方案的系统/集成测试。我需要使用我们自己的数据库 PostgreSQL 映像和已经应用的数据库模式。

出于这个原因,我正在使用 Testcontainers GenericContainer。

我正在使用 Spring Boot 开发测试,因此我创建了抽象类,它将为所有测试保存此配置

但是,问题是当测试运行时,容器仍在启动。这 withStartupTimeout(Duration.ofSeconds(30)) 出于某种原因不起作用。

当我在属性方法处停止调试并花几秒钟来启动容器时,所有测试都运行良好。

当测试失败时,我会看到下一个日志:

如果我放 Thread.sleep(..) 它也可以,这不是更好的解决方案。

什么是等待的正确解决方案或知道容器准备好的正确策略是什么?

0 投票
1 回答
241 浏览

java - 将 Spring Cloud Vault 与 @DynamicPropertySource 一起使用时出现问题

用于TestContainers启动Vault容器时,启动时随机选择容器暴露的端口。

使用 a@DynamicPropertySource覆盖属性

不起作用,因为Spring Cloud Vault似乎没有“看到”添加的属性。

该问题存在于Spring-Boot 2.5.1和中Spring-Cloud-Vault-Config 3.0.3

可以在GitHub 上找到一个显示该问题的小项目。

我做错了什么还是有其他方法可以覆盖配置?

Spring-Vault与 a@VaultPropertySource而不是一起使用时,Spring-Cloud-Vault事情会按预期工作。

0 投票
0 回答
2578 浏览

spring-boot - 找不到有效的 Docker 环境。请查看日志并检查配置

我正在尝试使用 Junit5 在 Spring Boot Kotlin 中编写集成测试。我正在使用测试容器来测试我的应用程序的数据访问层。我已经初始化了我的 docker 镜像。请参考我下面的代码。

当我尝试测试“containerStartsAndPublicPortIsAvailable”函数时,出现以下错误

0 投票
0 回答
97 浏览

docker - 带有暴露端口的测试容器自定义内部网络

我想使用 hazelcast 和 mongo 数据库在 java 中为 Spring Boot 应用程序编写集成测试:

spring 应用程序正在使用 hazelcast - hazelcast 必须向 spring 应用程序公开端口,spring 应用程序必须知道它

hazelcast 正在使用 mongo 数据库,hazelcast 必须知道 mongo 端口,mongo 容器必须对 hazelcast 可见。

有两个容器 - hazelcast 和 mongo。可能它们可能在内部网络中,但是有可能将 hazelcast 端口暴露给 spring 吗?

我怎样才能以最好的方式完成它?

0 投票
0 回答
317 浏览

mongodb - 带有 @Testcontainers 的 Mongo 驱动程序,在测试成功运行后抛出异常

我正在使用 testcontainers:mongodb 在示例 spring boot kotlin 项目中设置集成测试。

我已经设置了一个 MongoDBContaine,一切都按预期工作 - 应用程序连接到 mongodb 并使用存储库进行测试(例如保存、删除)工作得非常好,但我注意到在测试运行(成功)之后 mongodb.driver最后抛出异常 - 看起来容器没有被优雅地关闭/停止 - 这可能吗?

我如何启动容器的示例

测试方法

至于运行类,我只是在它上面加上@SpringBootTest 的@Testcontainers 注解,仅此而已。

我最后得到的例外是

0 投票
1 回答
27 浏览

testcontainers - 我想通过属性配置 IndefiniteWaitOneShotStartupCheckStrategy,而不是在 testcontainer 上使用 Java 类

我需要使用 testcontainer.properties 的“无限一次启动策略示例”。如何使用属性配置 IndefiniteWaitOneShotStartupCheckStrategy?

实际上,我想通过属性配置这三个示例,但我不知道如何执行此操作:

参考: https ://www.testcontainers.org/features/startup_and_waits/#indefinite-one-shot-startup-strategy-example

0 投票
0 回答
305 浏览

testcontainers - 使用“withFileSystemBind”绑定卷 -> 权限被拒绝

我将一个卷绑定到我的 GenericContainer 如下:

但我有一个权限被拒绝的问题。我在 GenericContainer 中运行的 spring-boot 应用程序中添加了以下内容:(rdfRepositoryHome = /mnt/spring)

输出:

如何绑定可写的卷?

谢谢

2021 年 8 月 19 日更新:
我向另一个项目添加了一个测试,该项目是公开的:

在镜像上运行:
maven:3.6.1-jdk-11

  1. .gitlab-ci.yml
  2. 测试用例
  3. Dockerfile
  4. 测试作业线 117
  5. 测试作业线 1800

更新 30.8.2021:
问题应该是可重现的(独立于 gitlab ci 和 DinD!)

0 投票
3 回答
244 浏览

spring-boot - 一些测试运行后测试容器失去连接

我在我的 oss 软件中使用 testcontainer,但我认为我的配置或 docker/testcontainer 运行时存在问题......

我有一些测试,当它们分开运行时,一切正常,但是当我尝试运行所有测试时,由于应用程序尝试与容器连接时出现问题,最后一次失败。

调试问题我发现容器在一个端口启动,但应用程序正在尝试在另一个端口连接,大部分都在最后一次运行的测试类中使用

所有测试运行:

测试失败

其中一个失败的测试向我显示了这个日志:

测试失败日志

并且在类启动时启动的容器UserControllerTest正在使用另一个端口,如下所示:

Windows 上的 docker 显示容器端口

我的测试配置基于一个抽象类(见下文),并且就像前面所说的,如果运行一个单独显示错误的类,一切正常。

有人见过这样的事情知道如何解决吗?

0 投票
0 回答
35 浏览

sql-server - 测试容器错误:数据库“DB_Name”不存在

我创建了一个具有以下定义的实体。运行测试后,我看到数据库“DB_Name”不存在。我为数据库和模式创建提供了初始脚本,但我仍然遇到问题。问题是代码中有 schema = "dbo", catalog = "DB_Name"。

初始脚本:

测试类:

我该如何解决这个问题?

0 投票
1 回答
508 浏览

java - 在 JUnit 5 所有类测试完成后,测试容器未从 docker 中删除

我正在使用测试容器对 micronaut 应用程序进行集成测试和端到端测试。

这是测试容器的配置

扩展测试容器的类

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

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