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