2016-12-07 232 views
1

我有一個Maven項目,我需要執行JUnit和TestNG測試。我的pom.xml有安裝Maven的Surefire插件如下:我的Maven項目如何在沒有試圖運行JUnit測試的情況下運行JUnit和TestNG?

<!-- ... --> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.19.1</version> 
    <configuration> 
    <argLine>-Xmx1024m</argLine> 
    <threadCount>1</threadCount> 
    </configuration> 
    <dependencies> 
    <dependency> 
     <groupId>org.apache.maven.surefire</groupId> 
     <artifactId>surefire-testng</artifactId> 
     <version>2.19.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.maven.surefire</groupId> 
     <artifactId>surefire-junit47</artifactId> 
     <version>2.19.1</version> 
    </dependency> 
    </dependencies> 
</plugin> 
<!-- ... --> 

不幸的是,當我使用神火執行我的單元測試,所有測試都正確執行,但TestNG的似乎是試圖執行JUnit測試第二次,並且日誌中會顯示類似以下的異常。

org.testng.TestNGException: 
Failure in JUnit mode for class com.hotwire.api.pricing.impl.PricingConfigIT: could not create/run JUnit test suite: 
Cannot find JUnit method class junit.framework.TestSuite$1.warning 
at org.testng.junit.JUnitTestRunner.runFailed(JUnitTestRunner.java:239) 
at org.testng.junit.JUnitTestRunner.start(JUnitTestRunner.java:232) 
at org.testng.junit.JUnitTestRunner.run(JUnitTestRunner.java:213) 
at org.testng.TestRunner$1.run(TestRunner.java:672) 
at org.testng.TestRunner.runWorkers(TestRunner.java:1003) 
at org.testng.TestRunner.privateRunJUnit(TestRunner.java:703) 
at org.testng.TestRunner.run(TestRunner.java:610) 
at org.testng.SuiteRunner.runTest(SuiteRunner.java:334) 
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329) 
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291) 
at org.testng.SuiteRunner.run(SuiteRunner.java:240) 
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53) 
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:87) 
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1170) 
at org.testng.TestNG.runSuitesLocally(TestNG.java:1095) 
at org.testng.TestNG.run(TestNG.java:1007) 
at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:132) 
at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:198) 
at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:94) 
at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:147) 
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290) 
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242) 
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121) 

如何防止此異常污染我的日誌?

回答

1

我以爲我會分享我的答案,因爲花費了一些時間才弄清楚,我的特殊問題與其他遇到此特定堆棧跟蹤的問題有所不同。

解決方案是將以下XML元素添加到pom.xml文件中的Surefire配置中。

<configuration> 
    <!-- pre-existing config --> 
    <properties> 
    <property> 
     <name>junit</name> 
     <value>false</value> 
    </property> 
    </properties> 
</configuration> 

這在Surefire documentation on running JUnit and TestNG tests together中進一步記載。

相關問題