Maven + Emma代码覆盖率示例

艾玛徽标

Emma是免费的Java代码覆盖工具。 在本教程中,我们将向您展示如何使用Maven为您的项目生成Emma代码覆盖率报告,以及如何将Emma报告集成到Maven项目站点中。

1.生成Emma代码覆盖率报告

不执行任何操作,只需键入以下Maven命令mvn emma:emma即可运行maven-emma-plugin

c:\project> mvn emma:emma

//...
Tests run: 16, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.53 sec
EMMA: locking coverage output file [C:\mkyong_projects\TestNG\coverage.ec] ...
EMMA: runtime coverage data merged into [C:\mkyong_projects\TestNG\coverage.ec] {in 78 ms}

Results :

Tests run: 16, Failures: 0, Errors: 0, Skipped: 0

[INFO]
[INFO] <<< emma-maven-plugin:1.0-alpha-3:emma (default-cli) @ TestNG <<<
[INFO]
[INFO] --- emma-maven-plugin:1.0-alpha-3:emma (default-cli) @ TestNG ---
processing input files ...
2 file(s) read and merged in 1 ms
writing [xml] report to [C:\mkyong_projects\TestNG\target\site\emma\coverage.xml] ...
writing [html] report to [C:\mkyong_projects\TestNG\target\site\emma\index.html] ...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.004s
[INFO] Finished at: Fri Jan 10 23:32:05 SGT 2014
[INFO] Final Memory: 25M/307M
[INFO] ------------------------------------------------------------------------
C:\mkyong_projects\TestNG>

Maven将编译,运行单元测试和Emma插件,以在${project}/target/site/index.html生成代码覆盖率报告。

图:Emma代码覆盖率报告的示例, ${project}/target/site/index.html

艾玛代码覆盖率报告1

图片:详细信息页面。

艾玛代码覆盖率报告2

2. Maven网站+ Emma报告

要将Emma报告集成到Maven项目站点中,请在报告部分中添加以下内容。

pom.xml
//...
  <reporting>
    <plugins>
	<!-- Normally, dependency report takes time, skip it -->
      <plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-project-info-reports-plugin</artifactId>
	<version>2.7</version>

	<configuration>
          <dependencyLocationsEnabled>false</dependencyLocationsEnabled>
	</configuration>
      </plugin>

      // integrate maven emma plugin to project site 
      <plugin>
	<groupId>org.codehaus.mojo</groupId>
	<artifactId>emma-maven-plugin</artifactId>
	<version>1.0-alpha-3</version>
	<inherited>true</inherited>
      </plugin>

    </plugins>
  </reporting>

创建Maven项目站点

c:\project> mvn site

//...
Tests run: 16, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.45 sec
EMMA: locking coverage output file [C:\mkyong_projects\TestNG\coverage.ec] ...
EMMA: runtime coverage data merged into [C:\mkyong_projects\TestNG\coverage.ec] {in 38 ms}

Results :

Tests run: 16, Failures: 0, Errors: 0, Skipped: 0

//... Generating other reports
[INFO] Generating "Project Summary" report    
[INFO] Generating "Dependencies" report    
[INFO] Generating "EMMA Test Coverage" report   
processing input files ...
2 file(s) read and merged in 2 ms
writing [xml] report to [C:\mkyong_projects\TestNG\target\site\emma\coverage.xml] ...
writing [html] report to [C:\mkyong_projects\TestNG\target\site\emma\index.html] ...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.488s
[INFO] Finished at: Fri Jan 10 23:43:58 SGT 2014
[INFO] Final Memory: 40M/1024M
[INFO] ------------------------------------------------------------------------

输出–项目站点, ${project}/site/index.html

Maven网站Emma

3.集成到Maven Build

您还可以在构建部分中包含“ emma-maven-plugin”。

pom.xml
//...
  <build>
		
    <plugins>

	<plugin>
		<groupId>org.codehaus.mojo</groupId>
		<artifactId>emma-maven-plugin</artifactId>
		<version>1.0-alpha-3</version>
		<inherited>true</inherited>
		<executions>
		  <execution>
			<phase>process-classes</phase>
			<goals>
				<goal>instrument</goal>
			</goals>
		  </execution>
		</executions>
	 </plugin>
			
    </plugins>
  </build>

只是提防X类似乎已被检测为错误。

参考文献

  1. Maven –创建一个站点
  2. 艾玛代码覆盖率工具
  3. Emma Maven插件
  4. Java代码覆盖率工具
  5. Maven + Cobertuna代码覆盖率示例

翻译自: https://mkyong.com/maven/maven-emma-integration-example/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值