问题标签 [testcontainers]

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 回答
876 浏览

junit - 有序启动和等待容器

我在使用@TestcontainersJunit5 的测试中有两个容器,aKafka和 a KafkaConnect

当我执行测试时,我发现一个错误,因为kafkaConnect没有正确启动 Kafka Connect 服务(映射端口 8083 没有监听)。这是因为在执行kafkaConnect之前启动kafka并且在执行kafka:9092期间到达url时kafkaConnect没有获得响应,因为kafka还没有运行。然后,我试图推迟kafkaConnect启动以等待kafka以确保kafka:9092可用性。

我尝试了不同的方法来做到这一点,但我没有解决这个问题。我尝试添加一些配置。

startupTimeout. 据我所知,这个配置不会推迟启动操作。它只是增加了检查容器是否启动的时间。

我还尝试了一些配置waitingFor,例如基于超时的,正如预期的那样,产生的结果与withStartupTimeout

或基于端口,这并不能解决我的问题,因为它不指向kafka容器,而是kafkaConnect.

我也尝试添加一些启动尝试,但它并不能解决问题,因为它kafkaConnect会重新启动几次,但总是在之前kafka

作为一个解决方案,我删除@ContainerkafkaConnect声明以便手动使用它的生命周期管理,所以我在测试用例中添加了显式开始,见下文

此确保kafkaConnectkafka. 但是,我没有找到通过策略、策略或类似的方式在容器定义期间定义顺序的解决方案,以便在容器之间添加依赖关系并避免强制性和手动的生命周期管理。

可能吗?

0 投票
1 回答
566 浏览

java - 在与测试容器的集成测试中,您如何管理 EM 或 EMF?

我有 java web 应用程序,我想为服务层编写集成测试。我决定使用testcontainers,所以在测试中我想调用服务,它将与 docker 容器中的数据库一起使用。

我的测试类看起来像下面的例子。

经测试的服务。

我需要在容器中创建连接到数据库的 EMF,然后将该 EMF 中的 EM 填充到经过测试的服务中。

感谢您的帮助或提示。

0 投票
1 回答
46 浏览

spring-boot - 尽管存在`@Transactional`,为什么这些数据库修改不回滚?

写了一个简短的便利扩展Testcontainers

现在想测试它。

  • Flyway 加载 30 个条目。这些应该在allDataPresent
  • canInsert插入一个不带扩展名的条目
  • canInsertWithExtension做同样的事情,但通过扩展功能
  • insertMultipleWithExtension正如其名称所暗示的那样,并插入另一个 5

除了allDataPresent测试用例(因为它是只读的)之外的所有测试用例都被注释了@Transactional

因此,我希望在测试方法之后回滚这些修改。

相反,发生的是

每个都@Test可以自己正常工作。所以问题一定出在@Transactional.

那为什么呢?更重要的是,我如何获得回滚?

完整的测试用例(也尝试注释类,没有任何区别):

0 投票
2 回答
8035 浏览

docker - 在 Jenkins Docker 代理中使用测试容器:容器无法启动,NoRouteToHostException

我正在使用带有 Docker 代理的 Jenkins 声明式管道来构建和测试我的软件,包括使用测试容器运行集成测试。我可以在我的开发环境中运行我的 testcontainers 测试(不使用 Jenkins),但它们在 Jenkins 下失败了。

testcontainers Ryuk 资源收割守护进程不起作用

我可以通过将环境变量设置为. 但是,一些集成测试仍然一再失败。TESTCONTAINERS_RYUK_DISABLEDtrue

使用ElasticsearchContainer重复的集成测试无法启动:等待 HTTP 端口响应超时。

然而,Elasticsearch 日志文件看起来不错,并且包含 Elasticsearch 在启动期间写入的最后一条日志消息(关于许可证)。

手动更改该容器以使用 aHostPortWaitStrategy而不是默认值HttpWaitStrategy并没有帮助。

在尝试调查或解决此问题时,我更改了测试代码以通过调用network.getId()testcontainersNetwork对象来显式启动 Docker 网络。然后失败了NoRouteToHostException

我该如何解决?

0 投票
1 回答
789 浏览

spring-boot - 使用 Testcontainers 执行运行集成测试的 Gitlab CI 管道作业时出现问题

我有一个 Spring Boot 应用程序测试,它使用 TestContainers ( https://www.testcontainers.org ) 对 KafkaContainer 运行一些集成测试。在本地运行时一切正常,但在 GitlabCI 管道中运行集成测试时,容器无法启动。这里的工作日志:

这里 Gitlab CI 配置:

这里亚军conf:

有什么帮助吗?谢谢

0 投票
1 回答
3650 浏览

java - 使用 Docker 和 Testcontainers 进行数据库集成测试

经过一番研究后,我认为 Docker 容器可能非常适合使用测试容器进行数据库集成测试,因为这只需要一个运行数据库映像的 Docker 容器,该数据库映像复制将执行测试的数据库模式。该实例可以在每个开发人员的机器上本地运行,或者更好的是,一个实例可以由多个开发人员共享:如果需要,可以将自动化测试配置为从 Docker 中的同一映像为每个测试方法启动一个数据库实例,使用@Rule 注释。

在尝试为 Windows 7 安装 Docker 以使用它时,我不断收到以下错误,这似乎与 VirtualBox 有关:

我将分享我是如何解决这个问题的,以帮助其他可能遇到同样问题的人。

0 投票
2 回答
1024 浏览

spring-boot - 测试容器和 Spring Boot 1.5

我们仍在使用 Spring Boot 1.5.x,我们想开始使用 TestContainers。但是,所有示例都使用 Spring boot 2.x,它使用TestPropertyValues仅在 2.x 中可用的类。甚至可以将新的属性值应用于 1.5.x 中的可配置上下文吗?

这是在 2.x 中工作的代码:

}

0 投票
1 回答
214 浏览

java - SpringBoot 集成测试 Sybase 和 Testcontainers

是否可以使用带有 Testcontainers 的 sybase 数据库来使用 Spring Boot 进行集成测试?

我无法在本地机器上安装 docker。

0 投票
0 回答
67 浏览

docker - testcontainers-go: p.client.DaemonHost 未定义

我正在尝试将 TestContainers-Go 添加到我的项目中。我使用 Github 自述文件中的 glide 和TestNginxLatestReturn示例。

在滑翔我放

但在运行时,我在 IDEA 中收到此错误。

知道为什么我会得到这个以及如何解决它吗?

在此处输入图像描述

0 投票
2 回答
492 浏览

docker - HBase + TestContainers - 端口重映射

我正在尝试使用测试容器对在 Docker 容器中启动的 HBase 运行集成测试。我遇到的问题对于客户端与 HBase 的交互方式可能有点独特。

当 HBase Master 在容器中启动时,它会将其 hostname:port 存储在 Zookeeper 中,以便客户端可以找到它。在这种情况下,它存储“localhost:16000”。

在我在容器外运行的测试用例中,客户端从 Zookeeper 检索“localhost:16000”并且无法连接。连接失败,因为该端口已被 TestContainers 重新映射到其他一些随机端口,而不是 16000。

任何想法如何克服这个问题?

(1) 一个想法是找到一种方法告诉 HBase 客户端使用重新映射的端口,忽略它从 Zookeeper 检索到的值,但我还没有找到一种方法来做到这一点。

(2) 如果我可以让 HBase Master 在 Zookeeper 中编写外部可访问的 host:port 也可以解决问题。但我不相信容器本身对测试容器如何进行端口重新映射有任何了解。

(3) 也许测试容器为这种情况提供了不同的解决方案?