问题描述
我正在尝试使用 Testcontainers Java 库和 JUnit 5 设置一些集成测试。我想使用 Maven 在 gitlab 管道中执行这些测试。发生的情况是,如果由于某种原因我正在测试的容器无法启动,则不会执行测试并且管道仍然成功。在这种情况下,我希望管道失败。
版本:
- Gitlab:13.9
- Maven:3.8.1
- Maven 故障安全插件:3.0.0-M4
- JUnit 木星:5.7.0
- 测试容器:1.15.0
在我的 .gitlab-ci.yml
中是这样的:
integrationtests:
stage: test
retry: 2
script:
- mvn test failsafe:integration-test failsafe:verify -DskipTests=false -Dskip.unit.tests=true -DskipITs=false
tags:
- run_one_at_a_time
在测试类中我有这个:
static {
containerForTestdata =
new FixedHostPortGenericContainer(CONTAINER_NAME)
.withFixedExposedPort(PORT,PORT)
.waitingFor(Wait.forHttp("/api/v4/projects"))
.withStartupTimeout(Duration.ofMinutes(7))
.withImagePullPolicy(PullPolicy.alwaysPull());
containerForTestdata.start();
}
static {
Runtime.getRuntime().addShutdownHook(new Thread(() -> containerForTestdata.stop()));
}
@BeforeAll
protected static void retrievetoken() throws InterruptedException,IOException {
org.testcontainers.containers.Container.ExecResult tokenValue = preconfiguredGitlab.execInContainer("tail","-1","/var/opt/gitlab/.token");
String testUrl = "http://localhost:" + PORT;
token = tokenValue.getStdout().trim();
connector = new Connector(testUrl,"testuser",token);
}
@Test
void testGetExistingProject() throws GitLabApiException {
Project foo = connector.getProject("foo");
assertEquals("foo",foo.getPathWithNamespace());
}
(我知道固定主机端口已被弃用并且违反了测试容器作者的理念,但我还没有找到解决方案。我想摆脱它,但会将这个问题留给另一个问题。)
如果容器启动,测试将按预期运行。但如果不是,则运行 0 个测试并且管道成功。我可以在本地运行测试,如果容器正常启动,则执行测试,如果容器启动失败,它还会列出 0 个测试运行和“构建成功”。我如何让它失败,以便我们注意到我们的设置存在问题?我什至不确定我应该在哪个活动部件中解决这个问题。
我认为这是输出的相关部分。
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[INFO] Running <my class IT>
[2021-04-06 13:22:20] INFO - Image name substitution will be performed by: DefaultimageNameSubstitutor (ConfigurationFileImageNameSubstitutor)
[2021-04-06 13:22:20] INFO - Pulling docker image: our-own-registry/testimage:latest. Please be patient; this may take some time but only needs to be done once.
[2021-04-06 13:22:20] INFO - Loaded org.testcontainers.dockerclient.UnixSocketClientProviderStrategy from ~/.testcontainers.properties,will try it first
[2021-04-06 13:22:21] INFO - Found Docker environment with local Unix socket (unix:///var/run/docker.sock)
[2021-04-06 13:22:21] INFO - Docker host IP address is localhost
[2021-04-06 13:22:21] INFO - Connected to docker:
Server Version: 20.10.5
API Version: 1.41
Operating System: Docker Desktop
Total Memory: 7964 MB
[2021-04-06 13:22:21] INFO - Credential helper/store (docker-credential-desktop) does not have credentials for index.docker.io
[2021-04-06 13:22:22] INFO - Ryuk started - will monitor and terminate Testcontainers containers on JVM exit
[2021-04-06 13:22:22] INFO - Checking the system...
[2021-04-06 13:22:22] INFO - ✔︎ Docker server version should be at least 1.6.0
[2021-04-06 13:22:22] INFO - ✔︎ Docker environment should have more than 2GB free disk space
[2021-04-06 13:22:24] INFO - Starting to pull image
[2021-04-06 13:22:24] INFO - Pulling image layers: 0 pending,0 downloaded,0 extracted,(0 bytes/0 bytes)
[2021-04-06 13:22:24] INFO - Pulling image layers: 3 pending,1 downloaded,(16 KB/? MB)
[2021-04-06 13:22:24] INFO - Pulling image layers: 2 pending,2 downloaded,(103 KB/? MB)
[2021-04-06 13:22:43] INFO - Pulling image layers: 1 pending,3 downloaded,(54 MB/? MB)
[2021-04-06 13:28:24] INFO - Pulling image layers: 0 pending,4 downloaded,(946 MB/946 MB)
[2021-04-06 13:29:10] INFO - Pulling image layers: 0 pending,1 extracted,2 extracted,3 extracted,(946 MB/946 MB)
[2021-04-06 13:29:12] INFO - Pulling image layers: 0 pending,4 extracted,(946 MB/946 MB)
[2021-04-06 13:29:12] INFO - Pull complete. 4 layers,pulled in 408s (downloaded 946 MB at 2 MB/s)
[2021-04-06 13:29:12] INFO - Creating container for image:our-own-registry/testimage:latest
[2021-04-06 13:29:14] INFO - Starting container with ID: e3af36da30714eb78811220592299472d690ff36ad9b527c457a8f4d7aeec45b
[2021-04-06 13:29:14] INFO - Container our-own-registry/testimage:latest is starting: e3af36da30714eb78811220592299472d690ff36ad9b527c457a8f4d7aeec45b
[2021-04-06 13:29:14] INFO - /priceless_varahamihira: Waiting for 420 seconds for URL: http://localhost:3000/api/v4/projects
[2021-04-06 13:36:14] ERROR - Could not start container
<logging of a very good reason to not start the container>
[INFO] Tests run: 0,Failures: 0,Errors: 0,Skipped: 0,Time elapsed: 835.217 s - in nl.sig.uploadunpacker.GitConnectorIT
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 0,Skipped: 0
[INFO]
[INFO]
[INFO] --- maven-failsafe-plugin:3.0.0-M4:verify (default-cli) @ UploadUnpacker ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 13:58 min
[INFO] Finished at: 2021-04-06T13:36:15+02:00
[INFO] ------------------------------------------------------------------------
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)