当前位置: 首页 > 知识库问答 >
问题:

E2E测试未在Jenkins作业上运行

许彭祖
2023-03-14

我在本地安装了两个Docker容器,其中包括Jenkins和Selenium。我有一个用Java编写的Maven项目,其中我创建了一套使用Selenium实现的E2E(端到端)测试。从IntelliJ的终端,使用“mvn测试”(或mvn清洁测试或其他组合)命令,测试正在运行,即使我对Chrome驱动程序使用headless或not。另外,这是用POM编写的插件之一:

<plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>${maven-surefire-plugin.version}</version>
          <configuration>
            <forkCount>3</forkCount>
            <reuseForks>true</reuseForks>
            <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
            <suiteXmlFiles>
              <suiteXmlFile>testng_suiteTest.xml</suiteXmlFile>
            </suiteXmlFiles>
          </configuration>
        </plugin>

XML套件文件包含每个自动测试的类和方法。

问题出现在詹金斯身上。因此,我基于我的Maven项目在Jenkins上创建了一份工作,在多次尝试之后(只是为了检查结果是否符合预期),我为构建部分设置了以下目标和选项:

clean install test -DsuiteXmlFile=testngSuite.xml -Dwebdriver.chrome.driver=/var/jenkins_home/tools/chromedriver/chromedriver -Dselenium.browser=chrome -Dwebdriver.chrome.whitelistedIps=172.17.0.2

由于生成jenkins作业时出现以下错误,因此在上面配置了分叉计数:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project : 
Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test failed: 
The forked VM terminated without saying properly goodbye. VM crash or System.exit called ? -> [Help 1]

之后,由于maven surefire报告中出现的错误,我还将这些库安装在Jenkins容器的根目录下:

  1. libglib2。0-0(使用Maythux的指示:https://askubuntu.com/questions/58664/cant-install-package-libglib2-0-dev-because-it-depends-on-some-unknown-version)

我还干扰了:无法分配请求的地址(99),但在阅读并应用以下内容后,现在一切正常:如何在启动chromedriver时修复“[SEVERE]:bind()失败:无法分配请求的地址(99)”

在所有这些操作以及可能忘记在这里书写的其他操作之后,现在似乎是Jenkins和Chrome Web驱动程序(或其他任何东西)之间的通信错误,我请求您提供建议。我在运行作业后的上一份报告中说:

[INFO] Running TestSuite
Jul 22, 2021 10:06:44 AM org.openqa.selenium.remote.DesiredCapabilities chrome
INFO: Using `new ChromeOptions()` is preferred to `DesiredCapabilities.chrome()`
Starting ChromeDriver 92.0.4515.43 (8c61b7e2989f2990d42f859cac71319137787cce-refs/branch-heads/4515@{#306}) on port 18974
Remote connections are allowed by an allowlist (172.17.0.2).
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
Jul 22, 2021 10:06:45 AM org.openqa.selenium.json.JsonOutput lambda$new$12
WARNING: Attempt to convert JsonElement from GSON. This functionality is deprecated. Diagnostic stacktrace follows
org.openqa.selenium.json.JsonException: Stack trace to determine cause of warning
Build info: version: '3.14.0', revision: 'aacccce0', time: '2018-08-02T20:19:58.91Z'
System info: host: '04f87025a7fb', ip: '172.17.0.2', os.name: 'Linux', os.arch: 'amd64', os.version: '5.10.25-linuxkit', java.version: '1.8.0_292'
.........
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[ERROR] There are test failures.
.........
An error occurred while instantiating class com.projectName.hr.E2E_Testing.E2E_ClientAboutSection_Test: null
org.apache.maven.surefire.booter.SurefireBooterForkException: There was an error in the forked process
An error occurred while instantiating class com.projectName.hr.E2E_Testing.E2E_ClientAboutSection_Test: null
.........
[INFO] Skipping execution of surefire because it has already been run for this configuration
[JENKINS] Recording test results
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  6.967 s
[INFO] Finished at: 2021-07-22T10:06:46Z
[INFO] ------------------------------------------------------------------------
Waiting for Jenkins to finish collecting data
[JENKINS] Archiving /var/jenkins_home/workspace/E2E/automation/pom.xml to com.incrys.hr/automation/1.0-SNAPSHOT/automation-1.0-SNAPSHOT.pom
channel stopped
Finished: SUCCESS

旧错误:

Caused by: java.lang.ExceptionInInitializerError
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:23)
    at org.testng.internal.InstanceCreator.instantiateUsingDefaultConstructor(InstanceCreator.java:193)
    at org.testng.internal.InstanceCreator.createInstanceUsingObjectFactory(InstanceCreator.java:113)
    ... 26 more
Caused by: org.openqa.selenium.WebDriverException: Timed out waiting for driver server to start.
Build info: version: '3.14.0', revision: 'aacccce0', time: '2018-08-02T20:19:58.91Z'
System info: host: '04f87025a7fb', ip: '172.17.0.2', os.name: 'Linux', os.arch: 'amd64', os.version: '5.10.25-linuxkit', java.version: '1.8.0_292'

安装在Jenkins上的插件:Selenium Selenium HTML报告chromedriver Jira Pipeline Maven集成Selenium功能Axis节点

到目前为止,也阅读和使用这些(在这种情况下,这些可能对其他人有用):

SeleniumChromeBrowserorg.openqa.selenium.WebDriverExc0019:等待驱动服务器启动超时

https://maven.apache.org/surefire/maven-surefire-plugin/examples/testng.html

https://howtodoinjava.com/testng/how-to-execute-testng-tests-with-maven-build/

Maven构建成功,但没有在硒中执行测试

故障保护插件设计用于运行集成测试,而Surefire插件设计用于运行单元测试。

https://maven.apache.org/components/surefire/maven-failsafe-plugin/

https://www.geekyhacker.com/2020/07/11/run-integration-tests-with-maven-failsafe-plugin/

TestNG在失败后不继续执行测试

configfailurepolicy="continue" 


  <properties>
    <java.version>1.8</java.version>
    <org.mapstruct.version>1.4.1.Final</org.mapstruct.version>
    <junit.jupiter.version>5.3.2</junit.jupiter.version>
    <maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version>
    <maven-jar-plugin.version>3.8.1</maven-jar-plugin.version>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

我也使用了Maven FailSafe插件,但不幸的是没有任何变化。现在使用TestNG版本7.0.0。

所以,我想在Jenkins上运行带有内置作业的端到端测试,任何建议都会有帮助!

共有1个答案

齐学文
2023-03-14

通过在Jenkins的VM上本地安装解决了通信问题:

  • 手动安装:Chromium(Linux)和
  • ChromeDriver插件,也是从命令行手动安装的,因为Jenkins接口的插件是一个较低的版本,与Chromium的最后一个版本不兼容(91...)
 类似资料:
  • 问题内容: 我想创建一个Jenkins作业来启动其他Jenkins作业。那将非常容易,因为Jenkins模板项目插件允许我们创建一个类型为“使用来自另一个项目的构建器”的构建步骤。但是,使我的情况更难的是,我必须在其他计算机上开始Jenkins的工作。有什么标准方法可以做到吗? 问题答案: 万一您只想触发Job的新版本,您有多种方法可以完成它 您可以使用远程访问API并触发请求以从源Job构建目标

  • 问题内容: 所以我有我的开源项目(https://github.com/ahmednuaman/radian),并且我有一些e2e测试,可以使用Protractor在本地正常运行。 我关注了Sauce Labs文档, 并进行了相应的设置。测试运行到Protractor尝试连接到Sauce Labs上的selenium服务器的地步,这是该错误的简短快照: 这是完整的工作日志:https : //tr

  • 前言 吐槽 e2e测试在前端测试中,也许是最不被看重的一项吧。 小公司就不说了,即使是大厂,也极少有e2e测试。因为它需要花费的精力,相比得到的回报而言,可以说是相差悬殊,说白了,就是吃力不讨好- -|| e2e测试其实就是模拟用户行为,我们得根据业务写各种各样的不同操作。而几乎所有的项目,业务都是会变的。所以,因为业务变了,模拟用户行为也会随之改变。最后,就各种改,即改业务代码,又改测试代码,结

  • 问题内容: 我正在尝试从Jenkins运行TestNG测试(在一个包含的Java项目中),但是没有运气。 似乎Jenkins的TestNG插件(https://wiki.jenkins-ci.org/display/JENKINS/testng- plugin )仅发布TestNG测试的结果,但实际上不运行测试类…或我错了吗? 无论如何,我如何在Jenkins的TestNG项目中实际运行TestN

  • 我试图从Jenkins那里运行TestNG测试(在一个包含Java的项目中),但没有成功。 看起来好像是Jenkins的TestNG插件(https://wiki.jenkins-ci.org/display/JENKINS/testng-plugin)只发布TestNG测试的结果,但不实际运行测试类。。。还是我错了? 在任何情况下,我如何在与Jenkins的TestNG项目中实际运行TestNG

  • 问题内容: 当我运行WebDriver测试时,它们根本无法工作。到目前为止,我已经完成了以下操作:1)我更新了注册表项,使其包含FEATURE_BFCACHE 2)所有区域的保护模式设置都相同3)禁用了增强保护模式4)我也尝试过在我的计算机上设置IEDriverServer路径 测试在Chrome,Firefox等上正常运行,但是在IE11上运行时,我得到: 我正在使用eclipse用Java编写