私は次のクラスを持っています:
public class MyClassTest {
@Rule
public ExpectedException thrown = ExpectedException.none();
@Test
public void testMyMethod() throws Exception {
// Test 1
String[] args = ...;
MyClass.myMethod(args);
// Test 2
thrown.expect(InvalidParamException.class);
thrown.expectMessage("exceptionString 1");
args = ...;
MyClass.myMethod(args);
// test 3
thrown.expect(InvalidParamException.class);
thrown.expectMessage("exceptionString 2");
args = ...;
MyClass.myMethod(args);
}
問題は、テスト2のexpectMessageがfalseであるということです。説明のために、実際の期待されるメッセージはexceptionString 3ですが、期待されるメッセージは実際のメッセージとは異なりますが、テストは失敗しません。それはもっと奇妙になります-expectMessageに「fdsfsdfsdfsdfsdfsdthe」のような意味不明なメッセージを提供すると、テストは失敗します:
java.lang.AssertionError:予期される:( InvalidParamExceptionのインスタンスと、「fdsfsdfsdfsdfsdfsdthe」を含む文字列のメッセージを含む例外)が、「fdsfsdfsdfsdfsdfsdthe」メッセージを含む文字列のメッセージの例外は「exceptionMessage3」でした
これは予想される動作ですが、exceptionMessage3を少しだけ変更すると、空の文字列を送信しても、テストはまったく失敗しません。
私は何かが足りないのですか?
ExpectedException
予想される例外は1つだけです。
このように再利用することはできません。どちらか:
ExpectedException
インスタンスがあります。try
/ catch
;assertThrows
(またはexpectThrows
)を使用します。この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加