Maven整合Junit unitils测试框架 cannot retrieve JUnit method

来源:互联网 发布:信捷plc编程软件 编辑:程序博客网 时间:2024/04/26 19:12

最近在项目中,使用unitils框架来进行测试,整合了Junit,Mockito等工具。所有的东西都配置好后,启动maven test 突然间报告如下的错误:

Configuring TestNG with: TestNGMapConfigurator
org.testng.TestNGException:
Failure in JUnit mode for class test.validator.TestTestor: could not create/run JUnit test suite:
cannot retrieve JUnit method
 at org.testng.junit.JUnitTestRunner.runFailed(JUnitTestRunner.java:231)
 at org.testng.junit.JUnitTestRunner.start(JUnitTestRunner.java:224)
 at org.testng.junit.JUnitTestRunner.run(JUnitTestRunner.java:205)
 at org.testng.TestRunner$2.run(TestRunner.java:536)
 at org.testng.TestRunner.runWorkers(TestRunner.java:712)
 at org.testng.TestRunner.privateRunJUnit(TestRunner.java:548)
 at org.testng.TestRunner.run(TestRunner.java:474)
 at org.testng.SuiteRunner.runTest(SuiteRunner.java:324)
 at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:319)
 at org.testng.SuiteRunner.privateRun(SuiteRunner.java:292)
 at org.testng.SuiteRunner.run(SuiteRunner.java:198)
 at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:821)
 at org.testng.TestNG.runSuitesLocally(TestNG.java:788)
 at org.testng.TestNG.run(TestNG.java:708)
 at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:115)
 at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeSingleClass(TestNGDirectoryTestSuite.java:129)
 at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:113)
 at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:111)
 at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:203)
 at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:155)
 at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)

一开始还以为是自己的测试用例写错了,导致Maven无法找到测试方法,后来仔细的查了一下资料,才发现,这个问题原来是TestNG和Junit冲突的问题。原来,MAVEN在测试的时候,如果遇到TestNG貌似会先去执行TestNG的框架进行测试,而不是使用Junit 而我的测试类又是基于Junit的,所以自然无法找到需要测试的方法了。

查了一下资料,在surefire插件中配置了参数: 

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-surefire-plugin</artifactId>
   <version>2.4-SNAPSHOT</version>
   <configuration>
     <properties>
       <property>
         <name>junit</name>
         <value>true</value>
       </property>
     </properties>
 </plugin>

据说这样可以让surefire限制性junit的测试。结果试了一下,似乎还是不行。

然后,仔细的检查了一下所有的依赖,发现unitils本身依赖了test-ng的包,于是,排除了unitils对于TestNG的依赖,再试,问题解决,testCase可以正常运行

0 0
原创粉丝点击