在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/,  这个链接倒是有讲单元测试,集成测试合在一起。 

 

这里面有点关键点就是 

				<plugin>
					<groupId>org.jacoco</groupId>
					<artifactId>jacoco-maven-plugin</artifactId>
					<version>0.7.2.201409121644</version>
					<executions>
						<execution>
							<id>prepare-unit-test-agent</id>
							<goals>
								<goal>prepare-agent</goal>
							</goals>
							<configuration>
								<destFile>${basedir}/target/jacoco.exec</destFile>
								<propertyName>surefire.argLine</propertyName>
							</configuration>
						</execution>
					
						<execution>
						  <id>generate-unit-test-report</id>
							<goals>
							  <goal>report</goal>
							</goals>
						</execution>

						<execution>
						  <id>failsafe_</id>
						  <goals>
							<goal>prepare-agent-integration</goal>
						  </goals>
							<configuration>
							 <destFile>${basedir}/target/jacoco-it.exec</destFile>
							 <propertyName>jacoco.agent.arg</propertyName>
							</configuration>
						</execution>
						<execution>
						  <id>failsafe_report</id>
						  <goals>
							<goal>report-integration</goal>
						  </goals>
						</execution>

					</executions>
				</plugin>
				
				 <plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-surefire-plugin</artifactId>
					<version>2.10</version>
					<configuration>
						<forkCount>1</forkCount>
						<reuseForks>false</reuseForks>
						<argLine>-Xmx512M -XX:MaxPermSize=200M ${surefire.argLine}</argLine>
					</configuration>
				</plugin>
				
				<plugin>
				  <groupId>org.apache.maven.plugins</groupId>
				  <artifactId>maven-failsafe-plugin</artifactId>
				  <version>2.16</version>
				  <configuration>
					<!--skip>${skipIntegrationTests}</skip-->
					<argLine>${jacoco.agent.arg}</argLine>
				   <includes>
					 <include>**/ITCase*.java</include>
					 <include>**/*ITCase.java</include>
				   </includes>
				</configuration>
				  <executions>
					<execution>
					  <goals>
						<goal>integration-test</goal>
					  </goals>
					</execution>
				  </executions>
			</plugin>

 

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

 

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

 

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

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

现在终于比较靠谱点了。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值