在Junit中抛出异常是否明智?



我一直在鼓吹处理异常并在测试中失败(下面给出的例子)。但是,这真的是一个正确的方法吗?无论如何,测试运行员将负责执行。为什么我们需要这样做?预测你的想法

示例:假设A.a()抛出异常
@Test
public void exampleExceptionTest(){
try{
      A.a();
      //Assertion
   }
catch(Exception e){
 assert.fail();
 }
}

我是否应该将上面的内容重写为,

@Test
public void exampleExceptionTest()throws Exception{
 A.a();
 //Assertion
 }

没有理由仅仅为了执行显式的fail()而在单元测试中捕获异常。如果遇到意外异常,测试将失败,因此最佳实践是按照第二个代码片段执行:

@Test
public void exampleExceptionTest() throws Exception {
    A.a();
    //Assertion
}

可以使用@Testexpected参数标注

@Test(expected=SomeException.class)
public void exampleExceptionTest() {
    A.a();
    //Assertion
}

最新更新