有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java junit断言已引发异常

一个比另一个好吗?如果是,原因是什么? 我倾向于第一种方法,因为我能更快地理解考试想要做什么

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

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

vs

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

共 (1) 个答案

  1. # 1 楼答案

    假设你的测试是这样的:

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

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

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

    但对于第二种方法,您可以指定希望确保异常由execute2()方法调用引发,因此只有当execute2()方法引发CustomException时,测试才会通过