Java 运行特定测试类的maven命令got org.testng.TestNGException

Java 运行特定测试类的maven命令got org.testng.TestNGException,java,maven,testng,Java,Maven,Testng,我有如下maven+testng项目: pom.xml <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.1</version> <configuration> <suiteXmlFiles> <suiteXmlFile>src/test/resou

我有如下maven+testng项目:

pom.xml

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.22.1</version>
    <configuration>
        <suiteXmlFiles>
            <suiteXmlFile>src/test/resources/config/testng.xml</suiteXmlFile>
        </suiteXmlFiles>
    </configuration>
</plugin>
<test name="SendAuroraRequests_TEST">
    <parameter name="requestsToEnv" value="test" />
    <classes>
        <class name="com.test.TrackerTest" />
    </classes>
</test>
当我尝试运行“mvn test”命令时,它工作得很好,但当我尝试使用maven命令运行特定的测试类,如“mvn test-Dtest=TrackerTest”时,它会引发异常,如:

[ERROR] setInvocationCount(com.test.TrackerTest)  Time elapsed: 0.656 s  <<< FAILURE!
org.testng.TestNGException:

Parameter 'requestsToEnv' is required by BeforeTest on method setInvocationCount but has not been marked @Optional or defined

    [INFO]
    [INFO] Results:
    [INFO]
    [ERROR] Failures:
    [ERROR]   TrackerTest.setInvocationCount ? TestNG
    Parameter 'requestsToEnv' is re...
    [INFO]
    [ERROR] Tests run: 4, Failures: 1, Errors: 0, Skipped: 3
    [INFO]
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  6.838 s
    [INFO] Finished at: 2019-08-09T22:56:34+08:00
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.1:test (default-test) on project hfatest-tracker: There are test failures.

[ERROR]setInvocationCount(com.test.TrackerTest)经过的时间:0.656秒您正在混合两种执行模式。TestNG允许您以两种模式运行测试:

  • 通过TestNG套件xml文件
  • 通过指定各个测试类的完全限定类名,可以对它们进行单独的测试
您应该尝试只使用其中一种模式,而不是混合使用

当您通过
-Dtest
TestNG传入单个测试类来运行测试时,TestNG将创建一个没有任何参数的命令行套件

所以你有两个选择:

  • 当您的测试涉及参数(使用了
    @parameters
    )时,您将坚持使用TestNG套件xml文件
  • 如果您仍然希望通过
    -Dtest
    JVM参数运行单个测试类,那么您可以通过JVM参数传入参数值[因此在您的情况下是
    mvn clean test-Dtest=TrackerTest-DrequestsToEnv=test
    ]
  • 这是可能的,因为TestNG允许您通过JVM参数将值传递给
    @Parameters


    有关更多详细信息,请参阅我的博客帖子:

    非常感谢,这对我很有用![mvn clean test-Dtest=TrackerTest-DrequestsToEnv=test]这就是我想要的。
    [ERROR] setInvocationCount(com.test.TrackerTest)  Time elapsed: 0.656 s  <<< FAILURE!
    org.testng.TestNGException:
    
    Parameter 'requestsToEnv' is required by BeforeTest on method setInvocationCount but has not been marked @Optional or defined
    
        [INFO]
        [INFO] Results:
        [INFO]
        [ERROR] Failures:
        [ERROR]   TrackerTest.setInvocationCount ? TestNG
        Parameter 'requestsToEnv' is re...
        [INFO]
        [ERROR] Tests run: 4, Failures: 1, Errors: 0, Skipped: 3
        [INFO]
        [INFO] ------------------------------------------------------------------------
        [INFO] BUILD FAILURE
        [INFO] ------------------------------------------------------------------------
        [INFO] Total time:  6.838 s
        [INFO] Finished at: 2019-08-09T22:56:34+08:00
        [INFO] ------------------------------------------------------------------------
        [ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.1:test (default-test) on project hfatest-tracker: There are test failures.