首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异常断言和其他断言jUnit

异常断言和其他断言jUnit
EN

Stack Overflow用户
提问于 2013-07-03 21:09:10
回答 1查看 72关注 0票数 1

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

代码语言:javascript
复制
@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)

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

EN

回答 1

Stack Overflow用户

发布于 2013-07-03 21:27:06

这是我在这个案例中遵循的模式。它按照设计使用ExpectedException。我喜欢throw e而不是在try中的方法调用后失败,因为如果有人决定删除fail,它不会导致假阳性(当人们看到fail()时,或者如果测试失败,因为它命中fail()时,人们倾向于这样做)。

代码语言:javascript
复制
@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;
  }
 }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17448927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档