断言错误,即使在 JUnit 中存在预期错误
Assertion error even if there is expected error in JUnit
我的应用中的测试抛出:
java.lang.AssertionError: Expected exception: java.lang.RuntimeException
at org.junit.internal.runners.statements.ExpectException.evaluate(ExpectException.java:35)
即使我有这个:
@Test(expected=RuntimeException.class)
public void test(){
// I can see from the console log that a java.lang.RuntimeException was thrown
}
可能是什么问题?
JUnit 检测异常被抛出的唯一方法是 @Test
方法抛出它,即。终止它的执行。
如果您正在捕获异常并进行处理,则方法执行不会因为抛出的异常而停止。它会正常完成。由于抛出的异常,您需要它突然完成。如果你需要记录它,请重新抛出它。
通过使用
注释您的测试
@Test(expected=RuntimeException.class)
您断言当测试 运行 时,将抛出 RuntimeExcetption 而 未捕获 。事实上,您在评论中指出“在调用的代码中有一个 try-catch 语句”,这意味着异常已被捕获。
因此 JUnit 将其标记为失败测试是正确的。您断言抛出了一个异常,但实际上并没有。
我的应用中的测试抛出:
java.lang.AssertionError: Expected exception: java.lang.RuntimeException
at org.junit.internal.runners.statements.ExpectException.evaluate(ExpectException.java:35)
即使我有这个:
@Test(expected=RuntimeException.class)
public void test(){
// I can see from the console log that a java.lang.RuntimeException was thrown
}
可能是什么问题?
JUnit 检测异常被抛出的唯一方法是 @Test
方法抛出它,即。终止它的执行。
如果您正在捕获异常并进行处理,则方法执行不会因为抛出的异常而停止。它会正常完成。由于抛出的异常,您需要它突然完成。如果你需要记录它,请重新抛出它。
通过使用
注释您的测试@Test(expected=RuntimeException.class)
您断言当测试 运行 时,将抛出 RuntimeExcetption 而 未捕获 。事实上,您在评论中指出“在调用的代码中有一个 try-catch 语句”,这意味着异常已被捕获。
因此 JUnit 将其标记为失败测试是正确的。您断言抛出了一个异常,但实际上并没有。