Jun 032007
 

試験管のなかのコード :: Maven2 Cobertura plugin でカバレッジにチャレンジを参考にCoberturaにチャレンジしたのですが、どうしても正しい値のレポートが出来上がってくれません。pom.xmlの記述は以下の通りです。

  <build>
    <plugins>
      :
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
        <configuration>
          <check>
            <branchRate>75</branchRate>
            <lineRate>75</lineRate>
            <haltOnFailure>false</haltOnFailure>
          </check>
        </configuration>
        <executions>
          <phase>pre-site</phase>
          <execution>
            <goals>
              <goal>clean</goal>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
    :
  </build>
  :
  <repoting>
    <plugins>
    :
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
      </plugin>
    : 
    </plugins>
  </reporting>

これでmvn siteを実行しても標準出力には

[ERROR] jp.example.***** failed check. Branch coverage rate of 0.0% is below 50.0%
jp.example.***** failed check. Line coverage rate of 0.0% is below 50.0%

と出力されるものの、HTMLレポート上は”Line Coverage 100%, Branch Coverage N/A”となってしまいます。
本家のFAQにはテスト時とレポート時のデータファイル(cobertura.ser)の場所が食い違ってる?、ようなことが書かれていますが、Mavenプラグインのときにどのように場所を明示すればよいのかよくわかりません 😕

どうしようか悩んでいたらEMMAのMaven2用PluginがMojo Sandboxにあることを発見。
using sandbox pluginsにしたがって使ってみるのも手ですが、丁度http://jira.codehaus.org/browse/MOJO-762にSNAPSHOTが上がっていたので、こちらをmvn install。
pom.xmlに以下を追加してmvn site実行したところ、それらしき値のカバレッジレポートが出るようになりました 😀

  <repoting>
    <plugins>
    :
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>emma-maven-plugin</artifactId>
      </plugin>
    : 
    </plugins>
  </reporting>

Coberturaでうまくレポーティングできないのはどうしてなんでしょう 😕

■2007-10-30追記
Coberturaで100%になってしまうのは2.1系での問題らしいです。
Maven2系でcobertura(カバレッジ計測)について – Java Solution
HTML report shows all 100% but cobertura:check shows correct coverage – only in 2.1, works in 2.0

パッチを適用してdatafileの場所を指定するなどの方法もあるようですが、2.0系を使うのが無難かも知れません。

Sorry, the comment form is closed at this time.