当我进行JUnit测试时,我希望调试器能够在测试代码中出现任何异常的位置停止,以便测试失败,以便检查错误.是否有可能配置IntelliJ的调试器来做到这一点,而不是打破其他异常?
如果我在任何未捕获的异常上设置了异常断点,那么这不起作用,因为JUnit捕获了异常.如果我尝试使用catch类org.junit对捕获的异常进行断点中断,那也不起作用,因为异常在Javas反射机制到达JUnit之前被Javas反射机制捕获并包装.所以我在这里有点不知所措 - Eclipse只是停在原来的例外.
澄清:我在讨论代码I测试中的异常或从那里调用的代码,而不是测试中的断言失败.例如,考虑以下测试:
@Test
public void thisShouldBreak() {
int i = 25 - 25;
int j = 17 / i;
}
private void neverBreakHereSinceThisIsCaught() {
int i = 14 - 14;
int j = 29 / i;
}
@Test
public void thisShouldNotBreak() {
try {
neverBreakHereSinceThisIsCaught();
} catch (ArithmeticException e) {
// ignored or handled
}
}
@Test
public void thisShouldNotBreakEither() {
try {
getClass().getDeclaredMethod("neverBreakHereSinceThisIsCaught").invoke(this);
} catch (Exception e) {
// ignored or handled
}
}
Run Code Online (Sandbox Code Playgroud)
我希望IntelliJ thisShouldBreak …
如果你的问题是我java.lang.ArrayIndexOutOfBoundsException在我的代码中得到了一个,我不明白为什么会发生这种情况.它是什么意思,我该如何避免它?
这是关于这个主题的最全面的Canonical信息集合
java.lang.ArrayIndexOutOfBoundsException以及java.lang.IndexOutOfBoundsException.
有很多像这样的问题,所有这些都有模糊的没有代码答案,或者大多数都非常具体,并且局限于手头的问题,并没有解决在所有情况下完全相同的根本原因.
如果您看到属于此一般情况的一个,而不是使用更多重复的专门内容回答它,请将其标记为此副本的副本.