Java 関数単体テストのカバレッジは、テストの有効性を示す指標です。推奨される目標は、行カバレッジ 80 ~ 90%、メソッド カバレッジ 100%、ブランチ カバレッジ 50 ~ 75% です。 JaCoCo ツールを使用してカバレッジを測定し、カバレッジ レポートに基づいてカバーされていない部分を特定します。テスト ケースの追加、スタブ オブジェクトとモック オブジェクトの使用、テスト データ ジェネレーターおよびその他の手法の導入により、テスト スイートがすべての可能なブランチとパスをカバーしていることを確認します。
Java 関数の単体テスト カバレッジ: メトリクスと実践例
はじめに
単体テストのカバレッジは、テスト スイートの有効性を測定するための重要な指標です。この記事では、Java 関数の単体テスト カバレッジを調査し、カバレッジを測定および改善する方法の実践的な例を示します。
カバレッジの測定
Java には、単体テストのカバレッジを測定するために使用できるさまざまなツールがあります。最も一般的に使用されるツールの 1 つは JaCoCo です。これはカバレッジ レポートを提供し、どの行、メソッド、ブランチがテストの対象となっているかを示します。
JaCoCo を使用するには、Maven または Gradle に次の依存関係を追加できます:
<dependency> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.7</version> </dependency>
テストを実行して JaCoCo プラグインをインストールした後、それを target に追加できます。 /jacoco.exec
ファイル カバレッジ レポートを見つけます。
カバレッジ基準
理想的な単体テストのカバレッジはプロジェクトや言語によって異なります。 Java 関数の場合、一般に推奨されるカバレッジ目標:
実用的なケース
次の Java 関数を考えてみましょう:
public int sum(int a, int b) { return a + b; }
未カバーのテスト:
@Test public void testSumPositive() { assertEquals(5, sum(2, 3)); }
このテストは、パス a >= 0 && b >= 0
のみをカバーします。他のパス (a < 0 && b < 0
および a >= 0 && b < 0
) はカバーされていません。
フルカバレッジ テスト:
@Test public void testSumPositive() { assertEquals(5, sum(2, 3)); } @Test public void testSumNegative() { assertEquals(-5, sum(-2, -3)); } @Test public void testSumMixed() { assertEquals(0, sum(2, -2)); }
このテスト スイートは、考えられるすべてのブランチをカバーするため、ライン、メソッド、ブランチ カバレッジ 100% を達成します。
カバレッジを向上させるヒント
単体テストのカバレッジを向上させるいくつかのヒント:
以上がJava 関数の単体テストの範囲はどのようにすべきでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。