DrJavaを使用してJavaを始めています。私は学習のためにTDDに従っています。一部のデータを検証すると思われるメソッドを作成しましたが、無効なデータでは、メソッドは例外をスローすると想定されています。
予想どおり例外をスローしています。しかし、例外を期待する単体テストを作成する方法がわかりません。
.net にはExpectedException(typeof(exception))
. DrJavaで同等のものを教えてもらえますか?
ありがとう
JUnitを使用している場合は、次のことができます
@Test(expected = ExpectedException.class)
public void testMethod() {
...
}
詳細については、APIを参照してください。
特定の例外タイプがテスト メソッド内のどこかでスローされたという事実を単にテストしたい場合は、既に示されているもので@Test(expected = MyExpectedException.class)
問題ありません。
例外のより高度なテストでは、 を使用して@Rule
、例外がスローされると予想される場所をさらに絞り込んだり、スローされた例外オブジェクトに関するテストを追加したりできます (つまり、メッセージ文字列が予期される値に等しいか、次の値を含む)。いくつかの期待値:
class MyTest {
@Rule ExpectedException expected = ExpectedException.none();
// above says that for the majority of tests, you *don't* expect an exception
@Test
public testSomeMethod() {
myInstance.doSomePreparationStuff();
...
// all exceptions thrown up to this point will cause the test to fail
expected.expect(MyExpectedClass.class);
// above changes the expectation from default of no-exception to the provided exception
expected.expectMessage("some expected value as substring of the exception's message");
// furthermore, the message must contain the provided text
myInstance.doMethodThatThrowsException();
// if test exits without meeting the above expectations, then the test will fail with the appropriate message
}
}