MyEclipseを使用して、いくつかのJUnitテストケースを自動的に生成しました。生成されたメソッドの1つは次のようになります。
_@Ignore("Ignored") @Test
public void testCreateRevision()
{
fail("Not yet implemented"); // TODO
}
_
_@Ignore
_アノテーションを手動で追加しました。ただし、テストを実行すると、JUnitはそのメソッドなどを無視するのではなく、「失敗」の下に一覧表示します(関連: JUnitの失敗とエラーの違いは何ですか? )。また、「無視」メッセージの代わりに「まだ実装されていません」メッセージが表示されます。明らかに、fail()
が呼び出されている必要があるため、_@Ignore
_アサーションは機能していません。
何が起きてる?これを機能させるために有効にする必要がある設定はありますか?
編集:
これまでに検討/試行したこと:
org.junit.Ignore
_をインポートしているので、間違ったIgnore
が使用されているわけではありません。@Ignore
_だけ、_@Ignore @Test
_および@Ignore("message") @Test
を使用してみました。すべて失敗します。編集2:
MyEclipseで_New > Other; Java > JUnit > JUnit Test Case; New JUnit 4 test
_を介してテストを作成し、ビルドパスのライブラリはJUnit 4です。antでビルドしていて、実際にMyEclipseでケースを実行しています。
正しい@Ignore
をインポートしていることを確認してください。必ず@org.junit.Ignore
を明示的に使用してください。
テストが3ではなくJUnit4によって実行されているかどうかを再確認します。これを行う最も簡単な方法は、テスト名を変更して、プレフィックスがtest
にならないようにすることです(現在はまったく実行されないはずです)。そして、JUnit 4はとにかくこのプレフィックスを必要としません)またはテストケースの継承階層を調べます:それはすべきではありませんjunit.framework.TestCase
から直接または間接的に拡張します(JUnit 3の要件)。
JUnit 3がクラスパスにない場合でも、この問題が発生しました。 Junit 4の互換モードは、テスト名の「test」プレフィックスを取得するため、@ Ignoreを取得するのではなく、JUnit3と同じように動作すると思います。解決策は、テストの名前を変更することです。
テストクラスが再コンパイルされましたか?
非常に一般的な問題です。ソースのどこかにタイプミス(セミコロンの欠落など)があったために再コンパイルが失敗し、IDEはコンパイルが失敗したことを通知しません。
target/test-classes
フォルダーを削除してみてください。
私の場合、IDEは@Ignore
アノテーションを無視してテストを実行していました。mvn install
(または他のMavenフェーズ)を実行すると、テストがスキップされました。私が実際に目指していたもの(添付の図を参照)。
テストをスキップするのは@Ignoreだけだと思います