我有以下類:JUnit 4中ExpectedException.expectMessage應該失敗的考驗,它不
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);
}
的問題是,在expectMessage測試2是假的,爲了討論的實際着想預期的消息是exceptionString 3,但測試不會失敗,但預期消息與實際消息不同。 它得到怪異 - 如果我提供expectMessage一亂碼消息,如「fdsfsdfsdfsdfsdfsdthe」 - 那麼測試失敗並:
java.lang.AssertionError: 預期:(InvalidParamException的實例,並與異常消息包含字符串「fdsfsdfsdfsdfsdfsdthe」) 但:有消息除了包含字符串「fdsfsdfsdfsdfsdfsdthe」消息是「exceptionMessage3」
這就是預期的行爲 - 但是當我改變exceptionMessage3只是一點點,或前兩個字母,甚至發送空字符串 - 測試不會失敗。
我錯過了什麼嗎?
'ExpectedException'只保留1個預期的異常。你不能像這樣重複使用它。 –