我一直在鼓吹处理异常并在测试中失败(下面给出的例子)。但是,这真的是一个正确的方法吗?无论如何,测试运行员将负责执行。为什么我们需要这样做?预测你的想法
示例:假设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
}
可以使用@Test
的expected
参数标注
@Test(expected=SomeException.class)
public void exampleExceptionTest() {
A.a();
//Assertion
}