一个比另一个好吗?如果是这样,出于什么原因? 我倾向于第一种,因为我可以更快地了解测试的目的。
如果是这样,什么时候应该使用assertThrows()
?
@Test(expected=CustomException.class)
public void test_one() {
execute()
}
vs。
@Test
public void test_one() {
assertThrows(CustomException.class, () -> execute());
}
答案 0 :(得分:3)
让我们说您以这种方式进行测试:
@Test
public void test_one() {
execute1();
execute2()
}
假设您要检查execute2()抛出的CustomException
。
现在,如果您采用第一种方法,并且execute1()
抛出CustomException
测试仍会通过,您将无法知道它是否被execute2()
抛出。
但是使用第二种方法时,您可以指定要确保execute2()
方法调用引发了异常,因此,只有在CustomException
引发execute2()
时,测试才会通过方法。