2016-12-07 4 views
1

У меня есть проект Maven, в котором я должен выполнять тесты JUnit и TestNG. Мой pom.xml настроившей Surefire плагин Maven следующим образом:Как мой проект Maven может запускать JUnit и TestNG без TestNG, пытаясь запустить тесты JUnit?

<!-- ... --> 
<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-элемент в конфигурацию Surefire в файле pom.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.

Смежные вопросы