次のようなマルチモジュール Maven プロジェクトを想像してください。
parent
+- core
+- main
mainモジュールに依存しcoreます。
と の2 つのメソッドを使用して、 にクラスCoreClassを記述します。テストでは、テストのみを行うテスト クラスを作成します。coremethod1()method2()coreCoreClass.method1()
カバレッジ ツール (私の場合は Cobertura を使用) を実行すると、テスト カバレッジの50%mvn sonar:sonarが得られることがわかります(両方のメソッドの長さが同じであると仮定した場合)。CoreClass
これまでのところ、すべて問題ありません。
ここで、mainプロジェクトで、をテストするテスト クラスを作成しCoreClass.method2()ます。したがって、通常、プロジェクト全体で分析を実行すると、ライン カバレッジが100%になると予想されます。CoreClass
しかし、私はまだ50%を取得しています。
これは包括的な動作であることを理解しています。実際、Cobertura は、モジュールではなく、モジュールでのテスト実行中にのみCoreClassカバレッジ分析用にインストルメント化します。これが、私がまだコード カバレッジの50%を保持している理由を説明しています。coremain
ただし、私の質問は、すべてのモジュールでテストを実行しているときに、実際のコード カバレッジを取得する方法があるかどうかを知ることです。CoreClass
ありがとう!
ps:完璧な世界では、クラスmainをテストすることはモジュールの関心事ではないことを私は知っています。coreしかし、ご存知かもしれませんが、私たちは完璧な世界ではありません :o)
技術情報: Java 1.6、JUnit 4.8.1、Maven 2.0.9 (まもなく 2.2.1 にアップグレードされますが、あまり重要ではないと思います)、Sonar 2.8