在Maven 整合FireSure 和 FailSafe

通常我们都是用SureFire 来做unit test 用 FailSafe 做integration test。  这两个插件的区别主要在于SureFire 发现有失败的单元测试默认就会报错, 而FailSafe 会保证所有的集成测试都做完。

 

如果是简单的用这两个插件来做测试的统计是没有问题的, Maven 默认都支持的。 但是如果牵扯到支持代码的覆盖率, 并且将这两种测试的覆盖率都能在Sonar 里面能统计出来就比较麻烦了。  搜遍互联网没有几个比较靠谱的。 其中比较靠谱的也 https://davidvaleri.wordpress.com/2013/09/06/tracking-integration-test-coverage-with-maven-and-sonarqube/ 。 这个链接只做了maven-failsafe-plugin 统计集成测试的。 另外一个链接 http://www.petrikainulainen.net/programming/maven/creating-code-coverage-reports-for-unit-and-integration-tests-with-the-jacoco-maven-plugin/,  这个链接倒是有讲单元测试,集成测试合在一起。 

 

这里面有点关键点就是 

				
					org.jacoco
					jacoco-maven-plugin
					0.7.2.201409121644
					
						
							prepare-unit-test-agent
							
								prepare-agent
							
							
								${basedir}/target/jacoco.exec
								surefire.argLine
							
						
					
						
						  generate-unit-test-report
							
							  report
							
						

						
						  failsafe_
						  
							prepare-agent-integration
						  
							
							 ${basedir}/target/jacoco-it.exec
							 jacoco.agent.arg
							
						
						
						  failsafe_report
						  
							report-integration
						  
						

					
				
				
				 
					org.apache.maven.plugins
					maven-surefire-plugin
					2.10
					
						1
						false
						-Xmx512M -XX:MaxPermSize=200M ${surefire.argLine}
					
				
				
				
				  org.apache.maven.plugins
				  maven-failsafe-plugin
				  2.16
				  
					
					${jacoco.agent.arg}
				   
					 **/ITCase*.java
					 **/*ITCase.java
				   
				
				  
					
					  
						integration-test
					  
					
				  
			

 

我们得确保jacoco  输出 surefire.argLine  跟 surefire 或者failsafe 的 argLine 对应。 

 

这样在Sonar 中我们就可以看到这样的结果

在Maven 整合FireSure 和 FailSafe_第1张图片

 

 最近看看Sonar 生成的Report 好像coverage 都是0, 汗啊!

 应该是有参数没有设定好, 参考了网上的另外一个blog  http://www.aheritier.net/maven-failsafe-sonar-and-jacoco-are-in-a-boat/ 

现在终于比较靠谱点了。

 

你可能感兴趣的:(CI,java,测试,php)