JUnitがテストケースを無視する:JUnit 4 @IgnoreとJUnit 5 @Disabledの比較

このチュートリアルでは、JUnitでテストケースを無視する方法について、例を挙げて説明します。 JUnit 4の@IgnoreとJUnit 5の@Disabledアノテーションの使い方を学びます:

前回のチュートリアルでは、アノテーションというAPIがどのようなもので、何をするものなのかを把握し、ライフサイクルアノテーションの使い方、テストケースが実行されたときの優先順位など、基本的な例を確認しました。

という場面で、光を当ててみましょう。 必要 ノット 走るか ざり ノット あるべき で、すべてのテストケースを実行します。 JUnitでテストケースを無視することを学びます。

JUnitのテストケースを無視する

テストケースの中には、特定のコード変更に関連していない、あるいはテストケースのコードがまだ開発中であるなどの理由で、実行を避けるものがあるかもしれません。

そこで、JUnit 4 や JUnit 5 では、いくつかのテストケースだけを実行し、いくつかのテストケースを無視したり無効にしたり、あるいは「スキップ」したりすることができるように、何が提供されているのでしょうか。

幸いなことに、私たちは イグノア のアノテーションがあります。 JUnit 4 は、テストケースをスキップするのに対し 使用不可 のアノテーションがあります。 JUnit 5 をするようにしました。

JUnit 4 - @Ignoreアノテーション

  • JUnit 4の@Ignoreアノテーションは、テストメソッドの実行をスキップするために適用できます。 この場合、スキップしたいテストメソッドの@Testアノテーションとともに@Ignoreを使用する必要があります。
  • このアノテーションはテストクラスにも適用でき、あるクラス以下のすべてのテストケースをスキップすることができます。 この場合、クラスレベルで@Ignoreを使用する必要があります。

このコードでは、@Ignoreを動作させるために、org.junit.Ignoreパッケージをインポートする必要があります。 JUnit 4のテストでテストメソッドをスキップする方法を説明します。 JUnitProgram.javaを修正して最初のテストケースメソッドをスキップすることにします。

コードスニペットは

 @Ignore @Test public void test_JUnit1() { System.out.println("This is testcase test_JUnit1() in this class"); } @Test public void test_JUnit2() { System.out.println("This is testcase test_JUnit2() in this class"); } @Test public void test_JUnit3() { System.out.println("This is testcase test_JUnit3() in this class"); } 

クラスファイルを実行すると、test_JUnit1()は実行中にスキップされます。 また、@Ignoreでアノテーションされたメソッドと他のすべてのテストメソッドは、期待通りに実行されます。

その結果、実行回数が3/3、スキップされたテストケースが1件となりました。 実行回数が3/3となったのは、スキップされたテストケースも実行しようとしたためです。

以下のコンソールウィンドウのスクリーンショットは、そのことを証明しています。

Reasonパラメータを指定してアノテーションを無視する。

Ignoreアノテーションにもバリエーションがあります。 このアノテーションは、テストをスキップする理由となる文字列値を1つの引数として取り込みます。

それでは、この@Ignoreアノテーションのバリエーションを実演してみましょう。

コードスニペットは以下の通りです:

 @Ignore("The testcase is under development") @Test public void test_JUnit1() { System.out.println("This is the testcase test_JUnit1() in this class"); } }. 

コンソールウィンドウには、@Ignoreアノテーションに渡された理由がないときと同じ結果が表示されます。

では、あるクラスに属するすべてのテストを無効にする方法を説明します。 JUnitProgram.javaのクラスレベルで@Ignoreアノテーションを更新することにします。

コードスニペットは以下の通りです:

 import org.junit.AfterClass; @Ignore("テストケースは開発中です") public class JUnitProgram { @BeforeClass public static void preClass() { System.out.println("This is preClass() method that runs one time before the class"); } @Before public void setUp() { System.out.println("___________________________________n"); System.out.println("this is setUp() method thatは各テストケースの前に実行されます"); } @Test public void test_JUnit1() { System.out.println("This is testcase test_JUnit1() in this class"); }. 

クラスファイルの実行後 コンソール ショー はありません、 とのことで、その 走る カウント をJUnitタブの下に表示します。 1クラスサボっている .

以下は、コンソールウィンドウのスクリーンショットです:

JUnit 5 - @Disabled アノテーション

JUnit 5の@Disabledアノテーションは、JUnit 4の@Ignoreアノテーションと同様の働きをします。

  • テストレベルでアノテーションを適用することで、テストメソッドまたはテストグループの実行を無効化またはスキップすることができます。
  • あるいは、@Disabledアノテーションをテストメソッドレベルに適用するのではなく、クラスレベルで適用することで、すべてのテストをスキップすることができます。

Ignoreと同様に、@Disabledにも理由を渡すと、開発者やビジネスアナリストは特定のテストケースがスキップされた理由を知ることができます。 Ignoreの場合と同様、パラメータはオプションのままです。

( 注意してください: Disabledアノテーションは、JUnit 4.の@Ignoreと全く同じ手法なので、繰り返しにならないように実際のコードで示すことは避けておきます)。

の場合に観察される唯一の相違点です。 無視」対「無効」。 は、JUnitクラスファイルの実行後に、クラスレベルでアノテーションを適用した場合、Runカウントで JUnit 4 は、1/1クラスがスキップされたことを示す。

したがって、a スキップされるクラスのカウントが提供される であるのに対し JUnit 5 を考慮すると、3/3のテストケースがスキップされることがわかります。 3つのテスト方法が省略された のうち、3つのテストメソッドで構成されています。

したがって、オン スキップされたテストケース数の視認性 , JUnit 5 は少しする より良い JUnit 4と比較した場合、ジョブが発生します。

結論

このチュートリアルでは、いくつかのテストケースの実行をスキップする必要がある場合について学びました。 また、JUnit 4とJUnit 5の両方で特定のテストケースをスキップする方法についても学びました。

トップへスクロール