问题标签 [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 - testcontainer启动后如何覆盖集成测试中application.properties中定义的端口?
假设我想在 Spring Boot 2.x 应用程序中使用 PostgreSQL 集成测试依赖于 JPA 数据源的代码testcontainer
(使用一行或几行代码从测试类中管理 Docker 容器的好工具)。进一步假设我正在管理端口(包含在 JDBC URL 中)application.properties
,例如
在集成测试中,我创建了测试容器
在准备方法中,我可以访问我想要设置的spring.datasource.url
值
如何在测试中告诉 Spring Boot 使用该 URL 而不是application.properties
.
我想坚持我的属性文件以最大程度地减少更改,但我感谢其他方法,包括解释它们为何优越或必要的原因。
我正在使用 Spring Boot 2.x。
kotlin - 如何使用 JUnit 5 在 Kotlin 中创建 TestContainers 基测试类
我正在尝试将 Neo4j TestContainers 与 Kotlin、Spring Data Neo4j、Spring Boot 和 JUnit 5 一起使用。我有很多测试需要使用测试容器。理想情况下,我想避免在每个测试类中复制容器定义和配置。
目前我有类似的东西:
如何提取 databaseServer 定义和@TestConfiguration?我尝试了不同的方法来创建一个基类并让 ContainerTest 扩展它,但它不起作用。据我了解,静态属性不会在 Kotlin 中继承。
docker - 在 gitlab CI 中将作业作为 Docker 容器运行 - Docker 虫洞模式
我正在尝试在 Docker 容器中运行测试,以下是我的 gitlab-ci.yml
在我的脚本中,我使用“ls -la”作为我的第一个命令来列出当前目录中可用的内容,如果在下一步中当前目录作为卷安装在容器内,它应该列出相同的内容。但我什么也没看到。有人可以指出我做错了什么吗?
参考资料: https ://www.testcontainers.org/supported_docker_environment/continuous_integration/dind_patterns/
java - 等待容器端口打开超时(本地主机端口:[32773] 应该正在监听)
我正在尝试使用https://www.testcontainers.org/固有的https://github.com/testcontainers/testcontainers-scala,如下所示:
当我使用 command 运行测试时sbt test
,出现以下异常:
该图像是本地图像:
问题是,它为什么要等待32775
端口?港口有什么用?
更新
也许这个日志会有所帮助:
java - 等待 0.0.0.0:8080 而不是 localhost:8080
在GenericContainer
类中,它存在一个方法waitingFor
,它等待状态码200
作为来自服务器的响应。
我在容器中运行 Web 应用程序并0.0.0.0
用作主机而不是localhost
. 当我尝试运行时sbt test
,我有以下超时:
我正在使用测试容器如下:
当我删除waitStrategy = Wait.forHttp("/")
时,它可以正常工作,但waitStrategy = Wait.forHttp("/")
会进入超时。
如何告诉Testcontainer
听0.0.0.0
而不是听localhost
?我在这里描述了 localhost 的问题:为什么客户端无法连接到 localhost:8080?
java - 使用 Artifactory 代理到 Docker Hub,并在防火墙内使用 testcontainers 进行测试
我正在尝试在使用 testcontainers 测试库写入 mongodb 时运行 Spring Boot 应用程序的测试。测试容器应该启动一个运行 mongodb 的 Docker 镜像。然后我运行我的测试,它连接到数据存储,写一些东西,我有断言来确保这些东西被存储。然后一切都消失了。
该测试需要在我们公司网络内的 Jenkins 构建代理(在 Red Hat Linux 7.5 上)上运行,该网络已被很好地锁定。
我们为 docker hub 设置了 Artifactory 代理。当我通常进行 docker 登录时,我给它https://artifactory.example.com或者只是使用“artifactory.example.com/docker-all/image:1.2.3”执行 docker run
Jenkins 运行的日志中包含以下内容:
问题:我不知道如何让registryUrl 在那里列出为“ https://artifactory.example.com/docker-all ”并且正确设置了registryUsername 和registryPasswords(如果我们的Artifactory 被锁定以供读取)。
网上有很多关于使用 HTTP 代理提供互联网访问的信息。我想我已经找到了如何做到这一点。但这不是我需要做的。
postgresql - SpringbootTest + TestContainers:测试污染数据库后如何刷新数据库
我正在使用这样的抽象类:
然后我有很多测试可以利用这个类,如下所示:
但是,我的一些测试会污染数据库。我想控制测试是否使用新数据库运行。执行此操作的规定方法是什么?
spring-boot - 使用 testcontainers 和 spring-boot 的代理问题
我尝试使用 testcontainers 的docker -compose 模块编写 spring-boot 集成测试。我在启动时收到以下异常:
我已经尝试使用 Env 添加我们公司的 http 代理,但它不起作用。
java - 为什么它的类型是 Nothing?
我正在尝试在我的 bdd 测试中使用https://www.testcontainers.org/,如下所示:
上面代码的问题是,变量sapMock
有 type Nothing
。看来,方法链接不起作用。
为什么变量sapMock
有类型Nothing
?
java - 在测试容器上使用 docker-compose.yml 时如何解决安装问题
我正在使用测试容器来运行一些测试并使用https://www.testcontainers.org/modules/docker_compose/来旋转一些用于我的测试的容器。与通用容器支持类似,也可以运行在 docker-compose.yml 文件中指定的定制服务集。
这对于已经在开发或其他环境中使用 Docker Compose 来定义应用程序可能依赖的服务的项目很有用。
这是我包含 docker-compose.yml 的代码
这是我的 yml 文件的内容:
我收到此错误{
"timestamp": "2019-06-11T21:08:32.320Z",
"level": "ERROR",
"thread": "Test worker",
"logger": " [docker/compose:1.8.0]",
"message": "Could not start container",
"context": "default",
"exception": "java.lang.IllegalStateException: Container did not start correctly.\n\tat org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:255)\n\tat org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:212)\n\tat org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:76)\n\tat org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:210)\n\tat org.testcontainers.containers.GenericContainer.start(GenericContainer.java:199)\n\tat org.testcontainers.containers.ContainerisedDockerCompose.invoke(DockerComposeContainer.java:548)\n\tat org.testcontainers.containers.DockerComposeContainer.runWithCompose(DockerComposeContainer.java:211)\n\tat org.testcontainers.containers.DockerComposeContainer.createServices(DockerComposeContainer.java:165)\n\tat org.testcontainers.containers.DockerComposeContainer.start(DockerComposeContainer.java:152)\n\tat org.testcontainers.containers.DockerComposeContainer.starting(DockerComposeContainer.java:121)\n\tat org.testcontainers.containers.FailureDetectingExternalResource$1.evaluate(FailureDetectingExternalResource.java:29)\n\tat org.junit.rules.RunRules.evaluate(RunRules.java:20)\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:363)\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)\n\tat org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:106)\n\tat org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58)\n\tat org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:38)\n\tat org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:66)\n\tat org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)\n\tat org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)\n\tat org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)\n\tat org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)\n\tat com.sun.proxy.$Proxy2.processTestClass(Unknown Source)\n\tat org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:117)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)\n\tat org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)\n\tat org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:155)\n\tat org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:137)\n\tat org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)\n\tat org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)\n\tat org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)\n\tat java.lang.Thread.run(Thread.java:748)\n"
}
{
"timestamp": "2019-06-11T21:08:32.348Z",
"level": "ERROR",
"thread": "Test worker",
"logger": " [docker/compose:1.8.0]",
"message": "Log output from the failed container:\nCreating network \"k66igshwvupa_default\" with the default driver\n\nCreating consul\n\nCreating vault\n\nCreating registrator\n\nCreating postgres\n\n\n\nERROR: for postgres Cannot start service postgres: oci runtime error: container_linux.go:247: starting container process caused \"process_linux.go:359: container init caused \\\"rootfs_linux.go:54: mounting \\\\\\\"/config/postgres/docker-entrypoint.sh\\\\\\\" to rootfs \\\\\\\"/mnt/sda1/var/lib/docker/aufs/mnt/df4d5e2dae646eab8079cee1b8a562c1b7d2d374340d01fecf4894e6ba64be8e\\\\\\\" at \\\\\\\"/mnt/sda1/var/lib/docker/aufs/mnt/df4d5e2dae646eab8079cee1b8a562c1b7d2d374340d01fecf4894e6ba64be8e/usr/local/bin/docker-entrypoint.sh\\\\\\\" caused \\\\\\\"not a directory\\\\\\\"\\\"\"\n\n: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type\n\nEncountered errors while bringing up the project.\n",
"context": "default"
}