小编Stp*_*tph的帖子

JUnit4 @Test(expected = MyException.class)VS try/catch

我正在考虑异常处理和单元测试最佳实践,因为我们正在努力获得一些代码最佳实践.

我们公司维基上发现的前一篇关于最佳实践的文章指出"不要使用try/catch,而是使用Junit4 @Test(expect = MyException.class)",没有进一步的信息.我不相信.

我们的许多自定义异常都有一个枚举,以便识别失败原因.结果,我宁愿看到如下的测试:

@Test
public void testDoSomethingFailsBecauseZzz() {
try{
   doSomething();
} catch(OurCustomException e){
   assertEquals("Omg it failed, but not like we planned", FailureEnum.ZZZ, e.getFailure());
}
}
Run Code Online (Sandbox Code Playgroud)

比:

@Test(expected = OurCustomException.class)
public void testDoSomethingFailsBecauseZzz() {
   doSomething();
}
Run Code Online (Sandbox Code Playgroud)

当doSomethig()看起来像:

public void doSomething throws OurCustomException {
  if(Aaa) {
     throw OurCustomException(FailureEnum.AAA);
  } 
  if(Zzz) {
     throw OurCustomException(FailureEnum.ZZZ);
  }
  // ...
}
Run Code Online (Sandbox Code Playgroud)

在旁注中,我更确信在某些情况下@Test(expected = blabla.class)是最佳选择(例如,当异常是精确的并且毫无疑问导致它的原因时).

我在这里遗漏了什么,还是应该在必要时推动使用try/catch?

java exception junit4

5
推荐指数
2
解决办法
1572
查看次数

标签 统计

exception ×1

java ×1

junit4 ×1