特定のメソッドがメソッドから予想される例外をスローすることをテストしようとしています。JUnit4のドキュメントとこの回答に従って、テストを次のように記述しました。
@Test(expected=CannotUndoException.class)
public void testUndoThrowsCannotUndoException() {
// code to initialise 'command'
command.undo();
}
ただし、このコードは JUnit テストに失敗し、スローされた (そして予想される) 例外をエラーとして報告します。
私がテストしているメソッドには、本体にこれだけがあります:
public void undo() {
throw new CannotUndoException();
}
さらに、次のテストに合格します。
public void testUndoThrowsCannotUndoException() {
// code to initialise 'command'
try {
command.undo();
fail();
} catch (CannotUndoException cue){
}
}
予想される例外が実際にスローされることを意味します。
私は実際にメソッドを変更して、例外をスローするのではなく、実際に何かを実行することを計画していますが、問題の原因が何かに興味を持っています。
次のチェックが行われました。
- テスト ケースにインポートされた CannotUndoException は正しいものです
- JUnit のバージョン 4 は、私のクラスパスにある唯一のものです
- Eclipseワークスペースをクリーンアップしてビルドしても結果は変わりませんでした
私は JUnit 4.1 を使用しており、同じテストで Mockito を使用しています。
誤った障害の原因は何ですか?