【发布时间】:2020-10-20 04:58:42
【问题描述】:
我需要在junit中进行测试,如果抛出异常则通过,但一次又一次失败。
我在 stackoverflow 和其他来源中阅读了很多关于该主题的问题和答案。最终我看到了这个页面,它解释了 junit.org 的 ExpectedException 类的用法。
由于我无法进行自己的测试,因此我复制了他们的简单示例,但仍然无法正常工作。
这是我的代码:
import static org.junit.jupiter.api.Assertions.*;
import org.junit.Rule;
import org.junit.jupiter.api.Test;
import org.junit.rules.ExpectedException;
class AssertExceptionTest {
@Rule
public ExpectedException thrown= ExpectedException.none();
@Test
public void throwsNothing() {
// no exception expected, none thrown: passes.
}
@Test
public void throwsExceptionWithSpecificType() {
thrown.expect(NullPointerException.class);
throw new NullPointerException();
}
}
引用我上面提到的页面,解释是“......在指定预期异常的类型后,当抛出此类异常时,您的测试成功,如果不同或否,则测试失败抛出异常...
问题是测试仍然失败,无论我做什么,它失败是因为我试图验证:抛出 NullPointerException。
我想可能是因为我使用的是 junit 5,所以我的测试失败了。但是,来自stackoverflow 的this question 提出了其他建议:提出问题的人提到他在eclipse 中使用junit 5 的方式与我在代码中的方式相同,成功。
技术细节: 日食版本:2019-12(4.14.0) junit 版本:junit 5 在 Ubuntu 上工作,版本:18.04.2 LTS。
更新: 我使用了 assertThrows(),它对我有用。但是,我仍然对上面描述的方法没有成功的原因感到困惑,这里有很多人建议。
提前致谢!
【问题讨论】:
标签: eclipse junit rules expected-exception