Java junit断言已引发异常

时间:2019-04-11 04:02:46

标签: java junit

一个比另一个好吗?如果是这样,出于什么原因? 我倾向于第一种,因为我可以更快地了解测试的目的。

如果是这样,什么时候应该使用assertThrows()

@Test(expected=CustomException.class)
public void test_one() {
   execute()
}

vs。

@Test
public void test_one() {
    assertThrows(CustomException.class, () -> execute());
}

1 个答案:

答案 0 :(得分:3)

让我们说您以这种方式进行测试:

@Test
public void test_one() {
   execute1();
   execute2()
}

假设您要检查execute2()抛出的CustomException

现在,如果您采用第一种方法,并且execute1()抛出CustomException测试仍会通过,您将无法知道它是否被execute2()抛出。

但是使用第二种方法时,您可以指定要确保execute2()方法调用引发了异常,因此,只有在CustomException引发execute2()时,测试才会通过方法。