アプリケーション用の Maven テスト プロジェクトがあります。
JUnit テストは正常に実行され、コード カバレッジ テストも実行されます。
しかし、レポートには常に 0% のコード カバレッジが表示されます。
私は何をすべきか?
公式サイトによると、Eclemmaは JaCoCo ライブラリに基づく Eclipse 用のコード カバレッジ プラグインです。
Eclipse の外部で同じコード カバレッジ エンジンを使用する場合は、次のようにプロジェクトの Maven 構成 (pom) 内にプラグインJacocoを含める必要があります (このコードは Agile Engineering ブログからコピーされました)。
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.6.0.201210061924</version>
<executions>
<execution>
<id>jacoco-initialize</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>jacoco-site</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
テストを実行するには、コマンド ライン ツールで次のように入力します。
mvn clean test
ps: CoberturaやEmmaなどの他のコード カバレッジ プラグインを使用することもできます。
Eclipse 内のツールを使用してレポートを取得したいだけだと気付きました...
Eclipse ダイアログのコード カバレッジはどうですか? このダイアログでマウスの右クリックを使用して、セッション (レポート) をエクスポートしようとしたか、または[ファイル] -> [エクスポート] 内で使用しようとしましたか?
これらを行うのを忘れた場合に備えて:
問題の原因が何であるかはわかりません。それは常に私にとってはうまくいったからです。Eclipse自体からインストールしましたか?それをアンインストールして、Eclipseから再インストールしてみてください。念のため、次のようにします。
この問題に遭遇したばかりで、正しく構成されていないクラスパスが原因でした。単体テストが実行されたとき、実際のソース コードではなく、コンパイルされた jar (Eclipse の外部でコンパイルされた実際のソース) に対して実行されていました。クラスパスから jar を削除した後、単体テストはパッケージ ソースに正しくヒットしました。
テストケースの一番上でクラスのインスタンスを呼び出すことで、私の問題を解決できました。すなわち
public hotelOccupancy hotel = new hotelOccupancy();
@Test
public void testName() {
// some test here
}
これを行うと、すべてのカバレッジが機能し始め、問題が解決されました.
私はeclemma 2.3.2を使用していますが、Eclipseで完全に動作しています
これらの依存関係を pom.xml に追加するだけです。
<dependency>
<groupId>org.jboss.arquillian.extension</groupId>
<artifactId>arquillian-jacoco</artifactId>
<version>1.0.0.Alpha6</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>org.jacoco.core</artifactId>
<version>0.7.1.201405082137</version>
<scope>test</scope>
</dependency>
次に、プロジェクトをビルドし、Maven プロジェクトの構成を更新して、カバレッジ プラグインを期待どおりに実行します。