异常断言以及其他断言jUnit

时间:2013-07-03 13:09:10

标签: exception junit junit4 junit-rule

我有一个抛出异常的方法。我有这样的测试。

@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)

我如何确保我的其他断言也得到满足。

1 个答案:

答案 0 :(得分:1)

这是我为此案例所遵循的模式。它按设计使用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;
  }
 }