问题标签 [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 回答
767 浏览

java - GenericContainer 不拾取文件进行处理

GenericContainer 在 Testcontainers 外部运行时不处理文件工作正常

似乎容器在某种程度上受到限制,没有足够的资源或以某种方式被阻止,或者文件监视的行为与绑定不正确。

显然,我期待得到回应,/home/greg/share/output但它永远不会到来。

当我这样做时工作得很好:

  1. docker run -itd --name cont --hostname somehost.com -p 8080:8080 --mount type=bind,source=/home/greg/share,target=/share ourproduct:latest
  2. docker exec -it cont bash

在容器中

  1. cd /opt/ourproduct
  2. ./Scripts/start.sh

主机上的外部容器

  1. cp message.txt /home/greg/share/input/

几秒钟后,我在home/greg/share/output Not the case for TestContainers...

编辑:当我添加测试时:

我得到:

知道什么是错的,为什么它没有运行?

0 投票
1 回答
404 浏览

java - 无法在 Testcontainers 中使用 Chrome 驱动程序打开任何带有 Selenium 的 URL

我正在尝试在 Testcontainers 内的 JUnit 测试中使用 Selenium 在项目上设置 UI 测试框架,并使用 IntelliJ IDE 进行开发。我正在使用 OpenJDK 12.0.1

我有我能想到的最基本的测试,但是在尝试获取任何网站(维基百科、谷歌等)时,我不断收到空指针异常

我在这里错过了一些重要的东西吗?

这是我设置的测试:

在我的 gradle 文件中,我正在导入以下内容:

我的 testcontainers.properties 文件中没有特殊设置

如果我理解我看到的所有例子,这应该是:

  1. 通过 testcontainers 在 docker 容器中打开测试。
  2. 在该容器内为 Chrome 创建驱动程序。
  3. 导航到给定的网站(在上面的示例中,google.com)
  4. 通过,因为 true = true

但是无论我如何更改代码,我都会遇到以下错误:

第 34 行是:driver.get("https://google.com");

0 投票
2 回答
1550 浏览

java - 具有本机查询的存储库在测试环境中失败 - postgres、jpa、spring

我已经使用测试容器为 spring boot 项目设置了集成测试(使用 postgresql 设置了一个 docker 实例)。如果我正在测试的存储库不使用本机查询,则测试效果很好。但是,每当存储库包含本机查询时,我都会收到以下错误:ERROR: relation "my_table_here" does not exist. 如何让我的测试配置工作以允许本机查询?

下面是我的测试设置:

编辑:我相信这与命名策略有关?

有关更多上下文,这里是如何在存储库中使用 nativeQuery 的示例

TestPostgresql我还尝试通过添加注释来更新内部静态类的 testProperties :

但是,收到的错误没有改变。

编辑:添加NativeEvent

0 投票
1 回答
3410 浏览

java - 使用 TestContainers 和 Jenkins 在 docker 容器中运行测试(docker.sock 权限被拒绝)

在我的测试中,我使用TestContainers. 我想使用 Jenkins 在容器中运行测试。我创建了这个图像用于运行测试maven。Dockerfile:

在我的测试中,我使用MySQL Cluster容器。

对于Jenkins我在 Jenkinsfile 中添加节点:

问题是 Jenkins 是从用户 jenkins 运行的。我使用相同的用户 ID 和组 ID 创建了相同的用户。但是当我开始测试时,我得到的访问docker.sock被拒绝:

我研究了这个页面:https ://www.testcontainers.org/supported_docker_environment/continuous_integration/dind_patterns/但它对我没有帮助。一切都从root用户开始,当然他没有问题。

我该如何解决?

0 投票
1 回答
724 浏览

java - 从资源中读取文件在 gitlab CI 中不起作用

使用以下命令在 gitlab CI 上运行测试时出现错误:

我正在使用测试容器来运行我的测试:https ://www.testcontainers.org/modules/docker_compose/

这是我用来加载位于 src/test/resources 的 docker compose 文件的代码。

我在本地运行时运行良好,在 gitlab 上运行 ci 时购买,我收到以下错误:

以下是我的 gitlab-ci.yml 文件:

在我的脚本中,我有ls -la src/test/resources并且可以在运行该脚本时看到该docker-compose.yml文件。不知道为什么在运行代码时它不可用。

0 投票
0 回答
350 浏览

mysql - 如何设置在TestContainers启动的Docker实例上运行的mysql全局变量

我目前正在使用 TestContainers 运行 Java Spring 应用程序来管理我的数据源。在 docker 实例初始化期间,我在 Docker 上为我的 MySQL 实例设置全局变量时遇到问题。

我已经尝试了几件事。

TestContainers 有一个execInContainer接受一串命令的方法。

此外,您还可以使用 .withInitScript("mysql_test_init.sql");

usingexecInContainer似乎什么都不做,也不会改变 MySQL 中的变量。

由于 Docker 使用非 root 用户进行更改,因此使用脚本失败。

有没有一种方法可以轻松更改/配置 MySQL 的全局变量。难道我做错了什么?

我想更改的一些参数:

  • character_set_client
  • character_set_connection

谢谢你。

0 投票
1 回答
1026 浏览

java - 如何通过测试容器启动 Informix?

我对在我的项目 中使用测试容器非常感兴趣。

但是,我很难将其设置为与 Informix 一起使用。

请注意,我可以使用 Docker-for-Mac 启动一个 informix 容器,它将构建并启动。

不确定它是否可以与测试容器一起使用。我希望它会。

这是我到目前为止所拥有的

测试班

容器启动然后永远挂起,并且永远不会进入测试

这是输出:

如果我注释掉这一行

// .withCreateContainerCmdModifier(command -> ((CreateContainerCmd)command).withTty(Boolean.TRUE))

然后它开始,但随后被这些消息无休止地卡在一个循环中,然后最终以同样的方式超时

0 投票
0 回答
266 浏览

docker - 测试容器访问外部 docker 网络

我有使用网络运行的 docker 容器。我运行了一个使用 BrowserWebDriverContainer 的测试,testcontainer 可以访问另一个 docker 容器使用的外部 docker 网络,所以 testcontainer 可以通过名称访问 docker tomcat 吗?

0 投票
0 回答
1100 浏览

java - 在 intellij 中使用 sudo 运行 java 测试

语境

我刚刚发现了 testContainers,这是一个可以启动 docker 容器的库,我想在 Intellij 中编写一个简单的测试来测试它。

问题

问题是当我在 Intellij 中运行配置时,代码会抛出异常,因为运行 docker 指令需要 sudo 权限。

试图将当前用户添加到 docker 组 sudo usermod -aG docker $USER 我仍然无法在 Intellij 中运行该应用程序,即使我使用 sudo 启动它。

工作选择

sudo mvn test直接在我有 pom 的地方使用。

问题:

我可以让它在 Intellij 中工作吗?

0 投票
1 回答
463 浏览

mysql - 如何使用从自定义 MySQL Docker 映像创建容器的 GenericContainer 配置 spring 数据源

我正在尝试在 spring 中运行使用数据访问层的集成测试,但为此我需要连接到数据库以运行应用程序 bean 进行测试。我的一些测试涉及使用数据库持久化数据,所以这就是我选择 testContainers 使用 docker 运行我的数据库测试的原因。这里的问题是我已经有一个我自己的 sql 图像,其中包含我需要测试的填充条目,我不想从头开始创建一个空数据库进行测试,我想使用我自己的图像进行测试。但我不知道如何从 docker 映像为 Spring Boot 配置我的数据源,因为对于通用容器,我们没有 getJDBCUrl() 函数或任何可以帮助我配置的东西。如果我直接使用 Mysql 映像,我知道配置数据源很容易。