Java 运行特定测试类的maven命令got org.testng.TestNGException
我有如下maven+testng项目: pom.xmlJava 运行特定测试类的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
<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.