Maven Emmaコードカバレッジの例

Maven + Emmaコードカバレッジの例

emma-logo

Emmaは、無料のJavaコードカバレッジツールです。 このチュートリアルでは、Mavenを使用してプロジェクトのEmmaコードカバレッジレポートを生成する方法、およびEmmaレポートをMavenプロジェクトサイトに統合する方法を示します。

1. エマコードカバレッジレポートの生成

何もせず、次の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:\example_projects\TestNG\coverage.ec] ...
EMMA: runtime coverage data merged into [C:\example_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:\example_projects\TestNG\target\site\emma\coverage.xml] ...
writing [html] report to [C:\example_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:\example_projects\TestNG>

Mavenはコンパイルし、単体テストとEmmaプラグインを実行して、${project}/target/site/index.htmlでコードカバレッジレポートを生成します。

図:Emmaコードカバレッジレポートのサンプル、${project}/target/site/index.html

emma-code-coverage-report-1

図:詳細ページ。

emma-code-coverage-report-2

2. Mavenサイト+エマレポート

EmmaレポートをMavenプロジェクトサイトに統合するには、レポートセクションに以下を追加します。

pom.xml

  //...
  
    
    
      
    org.apache.maven.plugins
    maven-project-info-reports-plugin
    2.7

    
          false
    
      

      // integrate maven emma plugin to project site
      
    org.codehaus.mojo
    emma-maven-plugin
    1.0-alpha-3
    true
      

    
  

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:\example_projects\TestNG\coverage.ec] ...
EMMA: runtime coverage data merged into [C:\example_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:\example_projects\TestNG\target\site\emma\coverage.xml] ...
writing [html] report to [C:\example_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-site-emma

3. Mavenビルドに統合する

ビルドセクションに「emma-maven-plugin」を含めることもできます。

pom.xml

  //...
  

    

    
        org.codehaus.mojo
        emma-maven-plugin
        1.0-alpha-3
        true
        
          
            process-classes
            
                instrument
            
          
        
     

    
  

class X appears to be instrumented alreadyエラーに注意してください。