web-dev-qa-db-ja.com

Junit 4に基本テストクラスを無視させる方法は?

多くのテストに必要なヘルパーメソッドを持つ基本クラスがあります。

それ自体にはテストはありませんが、(Eclipseの)JUnitはテストランナーを呼び出しており、テストする方法がないことを訴えています。

このクラスを無視させるにはどうすればよいですか?

問題を解決するdummyTestメソッドを追加できることは知っていますが、すべての子クラスにも表示されます。

提案?

53
Allain Lalonde

に使用 @Ignore注釈。クラスでも機能します。これを見てください:

@Ignore public class IgnoreMe {
                        @Test public void test1() { ... }
                        @Test public void test2() { ... }
                }

また、@ Ignoreを使用してテストメソッドを含むクラスに注釈を付けることができ、含まれるテストはいずれも実行されません。

ソース: JUnit JavaDoc

88
guerda

念のため、無視する理由を常に提示することをお勧めします。

@Ignore("This test will prove bug #123 is fixed, once someone fixes it")

私は、antからテストを実行するときに使用されるjunit xmlレポートフォーマッターに、無視されたカウント(および理由)に合格、失敗、エラーが含まれることを期待しています。

27
matt burns

クラスabstractを作成することで、JUnit 4に十分なはずです。機能しない場合は、使用しているJUnitのバージョンを再確認してください。

これは、これが単なるテストの断片であるという意図も伝えます。

また、JUnitがクラス内のテストを「無視」としてカウントするのを防ぎます(したがって、無視されたテストの最終カウントは期待どおりになります)。

または、クラスの名前を変更します。ほとんどのランナーはクラス名を使用して、どのクラスがテストで、どのクラスがヘルパーであるかを判断します。デフォルト設定のMavenでは、基本クラスがTestで開始または終了せず、TestCaseで終了しないことを確認する必要があります( http:// maven.Apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html

17
Aaron Digulla

2つのオプションがあります。

  1. 基本テストクラスを作成する必要がありますabstract、Junit4で十分です。 @Igonre属性を使用すると、無視されたテストとして表示されます(そして、テストの総数に追加されます)。

  2. テストクラスの名前を変更できます。テストクラスの名前は、テスト名の最初または最後でWordを持たない Test(大文字と小文字を区別します)、またはWord TestCaseの最後で変更できます。

ところで:@Igonreは、特定のテストを無視したい場合の異なるユースケース用です。

4
Tal Avissar