gpt4 book ai didi

Selenium 测试在本地有效,但在 Gitlab CI 中无效

转载 作者:行者123 更新时间:2023-12-02 18:39:42 28 4
gpt4 key购买 nike

我目前正在从事一个涉及经典后端/前端架构的 Java Spring Boot 项目。我正在尝试使用 Selenium WebDriver 编写一些基本的集成测试。

问题是我编写的测试在我的本地开发机器上毫无问题地通过了,但是当我通过持续集成设置 (Gitlab CI) 运行它们时却没有通过。

示例测试代码如下:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ActiveProfiles("test")
public class ExampleTest {

@LocalServerPort
private int port;

WebDriver wd;

@Test
public void successfulLogin(){
String url = "http://localhost:" + port;
wd = new HtmlUnitDriver();
wd.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
wd.get(url);
}
}

相关的 gitlab-ci.yml 部分是:

stages:
- test

maven-test:
image: maven:3.5.0-jdk-8
stage: test
script: "mvn test -B -Dmaven.repo.local=/root/.m2/"
only:
- master

CI 有一个运行器(版本 9.5.0),并发性为 1。它使用 docker 执行器和 docker:stable 图像。我不知道是否需要它,但它在 priviledged 模式下运行。在 CI 环境中运行测试时,它们失败并出现以下错误:

org.openqa.selenium.TimeoutException: java.net.SocketTimeoutException: Read timed out

我已经尝试过 url = "http://localhost:"+ porturl = InetAddress.getLocalHost().getHostName() + ":"+ port,都在本地通过,没有在CI环境通过。

我做错了什么?


编辑:Alfageme 建议使用更准确的测试方法。在运行 CI 的同一台服务器上,我使用 git clone 克隆了我的存储库,然后运行以下命令:

sudo gitlab-runner exec docker maven-test

测试顺利通过。我真的没主意了,有人有吗?

最佳答案

我不确定为什么,但是清除 CI 机器上的各种 runner-XXXXX-project-21-concurrent-0-cache-XXXXXXXXXXXXXXXXXXX docker 容器似乎解决了这个问题。


编辑:这只是暂时解决了这个问题。问题再次发生,这次清除缓存卷没有帮助。有人有什么建议吗?

关于Selenium 测试在本地有效,但在 Gitlab CI 中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46427474/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com