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