我有一个抛出异常的方法。我有一个这样的测试。
@Rule
public ExpectedException expectedEx = ExpectedException.none();
@Test
public void shouldThrowExceptionIfValidationFails() throws Exception {
doThrow(new InvalidException("Invalid Token")).when(obj).foo(any());
expectedEx.expect(InvalidException.class);
expectedEx.expectMessage("Invalid Token");
// my method call
// verify DB save doesn't happens
assertTrue(false);
}测试断言为异常,由于抛出了异常,因此测试通过。它不关心最后一行assertTrue(false)
我如何确保我的其他断言也得到了满足。
发布于 2013-07-03 21:27:06
这是我在这个案例中遵循的模式。它按照设计使用ExpectedException。我喜欢throw e而不是在try中的方法调用后失败,因为如果有人决定删除fail,它不会导致假阳性(当人们看到fail()时,或者如果测试失败,因为它命中fail()时,人们倾向于这样做)。
@Test
public void shouldThrowExceptionIfValidationFails() throws Exception {
doThrow(new InvalidException("Invalid Token")).when(obj).foo(any());
expectedEx.expect(InvalidException.class);
expectedEx.expectMessage("Invalid Token");
try{
// my method call
}catch(InvalidException e){
// verify DB save doesn't happens
assertTrue(false);
throw e;
}
}https://stackoverflow.com/questions/17448927
复制相似问题