感谢支持
我们一直在努力

surefire 和 surefire-report plugin

今天遇到了很奇怪的事情,浪费了两个小时。还是因为过于自信,没有仔细看配置。


maven 配置里面怎么也不能用上自己配置的testng.xml, 用了这么久,居然遇到这种问题。为此特意写了一个测试工程。


最后才发现,居然在改用surefire的地方用到了surefire-report,


下面是正确的配置,testng.xml就在项目根目录下,


  1.  <build>  

  2.    <plugins>  

  3.      <plugin>  

  4. <groupId>org.apache.maven.plugins</groupId>  

  5. <artifactId>maven-surefire-plugin</artifactId>  

  6. <version>2.12</version>  

  7. <configuration>  

  8.   <suiteXmlFiles>  

  9.     <suiteXmlFile>testng.xml</suiteXmlFile>  

  10.   </suiteXmlFiles>  

  11. </configuration>  

  12.      </plugin>  

  13.    </plugins>  

  14.  </build>  


当然也可以放在src/test/resources目录下,这样的话要写成


  1. <suritXmlFile>src/test/resources/testng.xml</suritXmlFile>  
testng.xml内容很简单:


  1. <!DOCTYPE suite SYSTEM “http://testng.org/testng-1.0.dtd” >  

  2. <suite name=“ClientApi” verbose=“1” >  

  3.     <test name=“functionTest”>  

  4.         <groups>  

  5.             <run>  

  6.                 <exclude name=“g1”/>  

  7.             </run>  

  8.         </groups>  

  9.         <classes>  

  10.             <class name=“com.mycompany.testngexample.AppTest”></class>  

  11.         </classes>  

  12.     </test>  

  13. </suite>  
如果不小心复制成了surefire-report-plugin, testng.xml会被忽略,然后所有的测试程序都会被执行。




我为什么会犯这个错误,因为我的父工程的pom.xml里面用到了site plugin,site plugin里面用到了surefire-report-plugin。




实际上surefire plugin运行测试代码,并将报告放在${basedir}/target/surefire-reports目录下


文件类型是txt和xml


而surefire report plugin负责将xml文件转换成html文件,这样就可以和site产生的报告合在一起。




所以项目中应该两个都需要,surefire-plugin单独配置,而surefire-report-plugin用在site-plugin内部


如果只用surefire-report plugin,我们就不能控制那些UT需要运行,哪些不需要运行。


这件事情其实暴露了maven的一个问题,如果surefire-plugin不支持某些设置,比如testng的配置,就应该及时报错,而不是悄无声息的做一些默认行为。


友好一点,大家生活都轻松点。




另外,如果将surefire-plugin配置在parent pom中,指定的testng.xml不用任何路径前缀的话,在child project中运行mvn test,就会找child project目录下的testng.xml,互相不干扰。非常方便。

赞(0) 打赏
转载请注明出处:服务器评测 » surefire 和 surefire-report plugin
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏