在下面的代码中,ClassToTest.throwsException()引发了一个已检查的异常。我的偏好是向JUnit方法签名添加throws异常,而不是在try catch中包装引发异常的代码。这种偏好仅基于我认为更整洁的事实。我在这里违反编码规范吗?从测试的角度来看,在测试方法中引发异常与try / catch的功能是否有所不同?
import org.junit.Test;
public class TestingClass {
@Test
public void getDataTest() throws Exception {
new ClassToTest().throwsException();
}
}
versus:
import org.junit.Test;
public class TestingClass {
@Test
public void getDataTest() {
try {
new ClassToTest().throwsException();
} catch (Exception e) {
e.printStackTrace();
}
}
}
ClassToTest.java:
public class ClassToTest {
public void throwsException() throws Exception {
}
}
如果不希望抛出Exception
,则在代码中添加try-catch
块没有任何额外的好处。更糟糕的是,仅添加try-catch
块将导致测试通过。要使测试失败,必须向fail()
添加一个调用才能使测试实际失败。这可能是错误的来源(如果忘记了呼叫fail()
的话)。
简单地将Exception
子句添加到方法声明中,并使异常冒泡,如this article over at Baelung中所写: