捕获中的Java AssertEquals

捕获中的Java AssertEquals,java,junit,Java,Junit,如果我在j单元测试中有类似的东西,测试还会失败吗 编辑:对不起,我应该早点说,我不想在这里取得任何成绩,这是我期中考试的一部分,有人告诉我catch中的任何assertEquals都会通过,我对此感到困惑。每当try块抛出异常时,catch块中的assertEquals都会执行,但我不确定您是否打算这样做。如果你想断言你的异常,你可以通过断言抛出来实现 我希望这个答案有帮助断言异常的首选方法是使用如下所示的expected: 例如,您希望测试应该抛出算术异常 @Test void t

如果我在j单元测试中有类似的东西,测试还会失败吗


编辑:对不起,我应该早点说,我不想在这里取得任何成绩,这是我期中考试的一部分,有人告诉我catch中的任何assertEquals都会通过,我对此感到困惑。

每当try块抛出异常时,catch块中的assertEquals都会执行,但我不确定您是否打算这样做。如果你想断言你的异常,你可以通过断言抛出来实现


我希望这个答案有帮助

断言异常的首选方法是使用如下所示的expected: 例如,您希望测试应该抛出算术异常

    @Test
  void testSomething() {
    try {
      //something that would throw an exception.
  } catch (Exception e) {
    assertEquals(true, false);
  }

如果指定
@Test(expected=SomeExpectedException.class)
,则当测试代码块生成预期异常时,测试将通过。

它仍将失败,因为您试图断言一个永远不会为真的条件:

@Test(expected = ArithmeticException.class)
public void div_shouldThrowArithmeticExceptionWhenDivisorIsZero() {
    int a = 10, b = 0;
    div(a,b);
}

这本身将抛出一个未被捕获的断言错误,因此整个单元测试将失败。

为什么不试试看?为什么不让异常传播?或者至少是
assertFalse()
assertEquals(true, false);