为什么不调用处理 assertEquals 的 `catch(Exception ex)` 中的 `fail`?
Why `fail` inside `catch(Exception ex)` handling `assertEquals` is not called?
几分钟前我遇到了这个问题,但我想尝试其他方法..
例如我有这个方法:
//inside Number.java
public static int add(int nr1, int nr2) {
return nr2 + nr2;
}
如你所见,我 return number2 + number2
在我的测试中,我使用它会抛出预期的错误 9 而不是在 main 方法中计算的数字。
@Test
public void test() throws Exception {
int nr1 = 4;
int nr2 = 5;
int sum = Number.add(nr1, nr2);
assertEquals(9, sum);
}
我现在尝试这样做,以便在程序失败时收到一条消息,但它并没有失败..
@Test
public void test() throws Exception {
int nr1 = 4;
int nr2 = 5;
int sum = Number.add(nr1, nr2);
try {
assertEquals(9, sum);
}catch(Exception e) {
fail("Are you sure you calculate the right numbers?");
}
}
但程序只向我显示 AssertionError 而不是 fail() 中的消息
我现在知道我可以这样使用它了:
assertEquals("...",9,sum);
但我不想要这个 AssertionError:
expected:<> but was <>
最后
AssertionError
扩展了 Error
实现了 Throwable
。你的
catch(Exception e)
没用,因为 AssertionError
不是 Exception
。
如果必须,可以直接使用 catch(AssertionError e)
捕获它,但通常 Error
不应该被捕获。
如果您真的想强制调用 fail
,请避免使用 assertEquals
,只需使用
if(sum != 9) {
fail("Are you sure you calculate the right numbers?");
}
这完全避免了 AssertionError。
几分钟前我遇到了这个问题,但我想尝试其他方法..
例如我有这个方法:
//inside Number.java
public static int add(int nr1, int nr2) {
return nr2 + nr2;
}
如你所见,我 return number2 + number2
在我的测试中,我使用它会抛出预期的错误 9 而不是在 main 方法中计算的数字。
@Test
public void test() throws Exception {
int nr1 = 4;
int nr2 = 5;
int sum = Number.add(nr1, nr2);
assertEquals(9, sum);
}
我现在尝试这样做,以便在程序失败时收到一条消息,但它并没有失败..
@Test
public void test() throws Exception {
int nr1 = 4;
int nr2 = 5;
int sum = Number.add(nr1, nr2);
try {
assertEquals(9, sum);
}catch(Exception e) {
fail("Are you sure you calculate the right numbers?");
}
}
但程序只向我显示 AssertionError 而不是 fail() 中的消息
我现在知道我可以这样使用它了:
assertEquals("...",9,sum);
但我不想要这个 AssertionError:
expected:<> but was <>
最后
AssertionError
扩展了 Error
实现了 Throwable
。你的
catch(Exception e)
没用,因为 AssertionError
不是 Exception
。
如果必须,可以直接使用 catch(AssertionError e)
捕获它,但通常 Error
不应该被捕获。
如果您真的想强制调用 fail
,请避免使用 assertEquals
,只需使用
if(sum != 9) {
fail("Are you sure you calculate the right numbers?");
}
这完全避免了 AssertionError。