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

Maven在运行测试用例时抛出错误

江渊
2023-03-14

我已经完成了Eclipse Maven TestNG,我打算运行Selenium测试用例。

这是我的POM文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>MyGroupId</groupId>
<artifactId>TestSuite</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>2.32.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.maven.surefire</groupId>
        <artifactId>surefire-testng</artifactId>
        <version>2.14.1</version>
    </dependency>
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.8.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>
</project>

现在,当我尝试运行Maven测试时,我得到以下错误:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
org.apache.maven.surefire.util.SurefireReflectionException:
java.lang.reflect.InvocationTargetException; nested exception is
java.lang.reflect.InvocationTargetException: null
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at 
    sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at org.apache.maven.surefire.util.ReflectionUtils.instantiateOneArg(ReflectionUtils.java:130)
at org.apache.maven.surefire.booter.SurefireReflector.instantiateProvider(SurefireReflector.java:247)
at org.apache.maven.surefire.booter.ProviderFactory.createProvider(ProviderFactory.java:81)
at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:171)
at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68)
 Caused by: java.lang.NoSuchMethodError: org.apache.maven.surefire.providerapi.ProviderParameters.getRunOrderCalculator()Lorg/apache/maven/surefire/util/RunOrderCalculator;
at org.apache.maven.surefire.testng.TestNGProvider.<init>(TestNGProvider.java:67)
... 10 more

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

有人能告诉我我错过了什么吗。

提前谢谢。

共有3个答案

皇甫飞飙
2023-03-14

我也有一个问题导致了这个错误,但对我来说,结果是运行测试的帐户缺少对测试文件夹的文件访问权限。

可能是要检查的东西

柏阳炎
2023-03-14

也许会帮助某人。我帮助-改变了测试的版本依赖

它是:

<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>6.11</version>
    <scope>test</scope>
</dependency>

并已成为:

 <dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>6.10</version>
    <scope>test</scope>
</dependency>
闾丘霖
2023-03-14

您必须在pluginManagement部分定义maven surefire插件,如下所示:

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.14.1</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

要将testng与maven surefire插件结合使用,通常只需将testng添加为一个依赖项即可。

此外,请删除您提供的依赖项:

<dependency>
    <groupId>org.apache.maven.surefire</groupId>
    <artifactId>surefire-testng</artifactId>
    <version>2.14.1</version>
</dependency>

除此之外,这看起来更像是一个集成测试,这是maven-故障安全插件的工作,而不是maven-surefire插件的工作。

<plugin>
  <artifactId>maven-failsafe-plugin</artifactId>
  <executions>
    <execution>
      <goals>
        <goal>integration-test</goal>
        <goal>verify</goal>
      </goals>
    </execution>
  </executions>
</plugin>

这意味着您的测试(大概是基于硒依赖关系的集成测试)可以通过以下方式运行:

mvn verify
 类似资料:
  • 遇到以下错误。无法确定确切的根本原因。 WebDriverException:无法连接到端口7055上的二进制FirefoxBinary(/usr/lib64/Firefox/Firefox);进程输出如下:错误:无法打开Display::99错误:无法打开Display::99 构建信息:版本:“2.45.0”,修订版:“32A636C”,时间:“2015-03-05 22:01:35”系统信息

  • 我有一个.jar文件,我在那里打包了我的maven托管java项目,该项目也很少有Junit测试用例。现在我想从.jar文件运行测试用例。例如,从源代码中 将运行测试用例,但它不适用于.jar文件。 如何从.jar文件运行 Junit 测试用例?

  • 问题内容: 使用和我可以进入有问题的等待线程,但不知道如何对其进行故障排除或造成此故障的原因。参见下面的Maven依赖项和结果以及带有的等待线程。进一步分析,对于所选版本,Eclipselink和hsqldb之间似乎存在问题。由于升级这两个库而导致出现此问题,因为它们以前分别适用于Eclipselink和hsqldb的2.0.1和1.8.0.10版本。 而堆栈跟踪是: 问题答案: 确实确实看起来像

  • 问题出现在字段中。 在JUnit4中,一切都工作得很好,没有错误。我试图使用JUnit4中的,因为我在pom.xml中有一个junit-vintage-engine依赖项,但没有帮助。

  • 我想从intelliJ运行我的spring-boot应用程序,而不是使用终端,但它不允许,它只是抛出了一大堆错误,而当我从中的终端运行时,应用程序会按预期启动。 通过intelliJ(右上角的run按钮)运行时: 但当我去跑的时候: 在终端中,我的应用程序启动,我可以开始对服务器进行http调用。