是否可以在Junit中抛出异常?

时间:2015-09-08 10:45:03

标签: java 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
 }

2 个答案:

答案 0 :(得分:2)

没有理由在单元测试中捕获异常,因此您可以执行显式fail()。如果遇到意外异常,测试将失败,因此最佳做法是在第二个代码段中执行:

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

答案 1 :(得分:0)

您可以使用expected注释的@Test参数

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