问题标签 [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.
java - GenericContainer 不拾取文件进行处理
GenericContainer 在 Testcontainers 外部运行时不处理文件工作正常
似乎容器在某种程度上受到限制,没有足够的资源或以某种方式被阻止,或者文件监视的行为与绑定不正确。
显然,我期待得到回应,/home/greg/share/output
但它永远不会到来。
当我这样做时工作得很好:
docker run -itd --name cont --hostname somehost.com -p 8080:8080 --mount type=bind,source=/home/greg/share,target=/share ourproduct:latest
docker exec -it cont bash
在容器中
cd /opt/ourproduct
./Scripts/start.sh
主机上的外部容器
cp message.txt /home/greg/share/input/
几秒钟后,我在home/greg/share/output
Not the case for TestContainers
...
编辑:当我添加测试时:
我得到:
知道什么是错的,为什么它没有运行?
java - 无法在 Testcontainers 中使用 Chrome 驱动程序打开任何带有 Selenium 的 URL
我正在尝试在 Testcontainers 内的 JUnit 测试中使用 Selenium 在项目上设置 UI 测试框架,并使用 IntelliJ IDE 进行开发。我正在使用 OpenJDK 12.0.1
我有我能想到的最基本的测试,但是在尝试获取任何网站(维基百科、谷歌等)时,我不断收到空指针异常
我在这里错过了一些重要的东西吗?
这是我设置的测试:
在我的 gradle 文件中,我正在导入以下内容:
我的 testcontainers.properties 文件中没有特殊设置
如果我理解我看到的所有例子,这应该是:
- 通过 testcontainers 在 docker 容器中打开测试。
- 在该容器内为 Chrome 创建驱动程序。
- 导航到给定的网站(在上面的示例中,google.com)
- 通过,因为 true = true
但是无论我如何更改代码,我都会遇到以下错误:
第 34 行是:driver.get("https://google.com");
java - 具有本机查询的存储库在测试环境中失败 - postgres、jpa、spring
我已经使用测试容器为 spring boot 项目设置了集成测试(使用 postgresql 设置了一个 docker 实例)。如果我正在测试的存储库不使用本机查询,则测试效果很好。但是,每当存储库包含本机查询时,我都会收到以下错误:ERROR: relation "my_table_here" does not exist
. 如何让我的测试配置工作以允许本机查询?
下面是我的测试设置:
编辑:我相信这与命名策略有关?
有关更多上下文,这里是如何在存储库中使用 nativeQuery 的示例
TestPostgresql
我还尝试通过添加注释来更新内部静态类的 testProperties :
但是,收到的错误没有改变。
编辑:添加NativeEvent
:
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用户开始,当然他没有问题。
我该如何解决?
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
文件。不知道为什么在运行代码时它不可用。
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
谢谢你。
java - 如何通过测试容器启动 Informix?
我对在我的项目 中使用测试容器非常感兴趣。
但是,我很难将其设置为与 Informix 一起使用。
请注意,我可以使用 Docker-for-Mac 启动一个 informix 容器,它将构建并启动。
不确定它是否可以与测试容器一起使用。我希望它会。
这是我到目前为止所拥有的
测试班
容器启动然后永远挂起,并且永远不会进入测试
这是输出:
如果我注释掉这一行
// .withCreateContainerCmdModifier(command -> ((CreateContainerCmd)command).withTty(Boolean.TRUE))
然后它开始,但随后被这些消息无休止地卡在一个循环中,然后最终以同样的方式超时
docker - 测试容器访问外部 docker 网络
我有使用网络运行的 docker 容器。我运行了一个使用 BrowserWebDriverContainer 的测试,testcontainer 可以访问另一个 docker 容器使用的外部 docker 网络,所以 testcontainer 可以通过名称访问 docker tomcat 吗?
java - 在 intellij 中使用 sudo 运行 java 测试
语境
我刚刚发现了 testContainers,这是一个可以启动 docker 容器的库,我想在 Intellij 中编写一个简单的测试来测试它。
问题
问题是当我在 Intellij 中运行配置时,代码会抛出异常,因为运行 docker 指令需要 sudo 权限。
试图将当前用户添加到 docker 组
sudo usermod -aG docker $USER
我仍然无法在 Intellij 中运行该应用程序,即使我使用 sudo 启动它。
工作选择
sudo mvn test
直接在我有 pom 的地方使用。
问题:
我可以让它在 Intellij 中工作吗?
mysql - 如何使用从自定义 MySQL Docker 映像创建容器的 GenericContainer 配置 spring 数据源
我正在尝试在 spring 中运行使用数据访问层的集成测试,但为此我需要连接到数据库以运行应用程序 bean 进行测试。我的一些测试涉及使用数据库持久化数据,所以这就是我选择 testContainers 使用 docker 运行我的数据库测试的原因。这里的问题是我已经有一个我自己的 sql 图像,其中包含我需要测试的填充条目,我不想从头开始创建一个空数据库进行测试,我想使用我自己的图像进行测试。但我不知道如何从 docker 映像为 Spring Boot 配置我的数据源,因为对于通用容器,我们没有 getJDBCUrl() 函数或任何可以帮助我配置的东西。如果我直接使用 Mysql 映像,我知道配置数据源很容易。