2016-12-07 4 views
1

私はJUnitとTestNGテストの両方を実行する必要があるMavenプロジェクトを持っています。次のように私のpom.xmlセットアップMavenの確実なプラグインを持っている:私はシュアファイアを使用して、私のユニットテストを実行するときJUnitテストを実行しようとするTestNGなしで、Mavenプロジェクトで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

この特定のスタックトレースに遭遇した他の人の問題と私の特定の問題が多少異なるので、私は答えを共有すると思っていました。

解決策は、pom.xmlファイルのSurefireの設定に次のXML要素を追加することです。

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

これはさらにSurefire documentation on running JUnit and TestNG tests togetherに記載されています。

関連する問題