我正在测试具有预期异常的方法。我还需要在引发异常后验证是否在某个模拟对象上调用了一些清理代码,但看起来该验证已被忽略。这是代码。我正在使用JunitExpectedException
Rule
验证预期的异常。
@Rule
public ExpectedException expectedEx = ExpectedException.none();
@Test
public void testExpectedException()
{
MockedObject mockObj = mock(MockedObj.class);
MySubject subject = new MySubject(mockedObj);
expectedEx.expect(MyException.class);
expectedEx.expectMessage("My exception message.");
subject.someMethodThrowingException();
verify(mockObj).
someCleanup(eq(...));
}
似乎verify
完全被忽略了。无论我采用什么方法verify
,我的测试都通过了,这不是我想要的。
知道为什么会这样吗?
finally
块中会吞下异常?finally
不会捕获异常,因此它将传播到包装器。参见凯文·韦尔克的回答;这很好。