相关疑难解决方法(0)

JUnit 4和Suspend-on-Exception

当我的代码中抛出未捕获的异常时,我习惯让调试器停止在throw语句中,以便我可以检查局部变量以及抛出异常时所涉及的所有对象的成员.随着IntelliJ IDEA的,这可以通过将要完成运行,查看断点,选择异常断点选项卡,检查任何异常,并确保在捕捉到异常复选框取消选中,而uncaught异常复选框被选中.使用EclipseVisual Studio(用于C#),它是不同的,但沿着相同的路线.

使调试器以这种方式运行的能力非常有用; 实际上非常有用,我相应地构建了我的程序的主循环:在发布版本中,主循环当然嵌入在try-catch-all中; 但是在调试版本中,主循环中没有try-catch块,因此在我的程序中任何地方都没有捕获的任何异常都将保持未被捕获状态,因此调试器将在抛出它们时暂停我的程序.

但是,在使用JUnit测试我的Java类时,我遇到了一个问题:调试器不会停止任何异常.相反,发生的事情是,不仅预期的,而且意外的异常也会被自动捕获,并且我会得到一个事后异常堆栈跟踪,以尝试从中理解.那不是很酷.

我曾经认为这种情况正在发生,因为JUnit利用java.lang.reflect.Method.invoke()它捕获所有异常并将它们转换为TargetInvocationExceptions,但后来我编写了自己的自定义JUnit运行程序,它个人知道我的测试类并直接调用它的方法Method.invoke(),问题仍然存在.这意味着问题出现在核心JUnit中.

那么,其他人是否也有同样的问题?有没有人知道一个解决方案,以便我们可以让调试器在使用JUnit进行测试时暂停程序执行意外异常?

相关(未答复)问题:在Eclipse Junit测试运行器中暂停未捕获的运行时异常

相关(未答复)问题:如何在jUnit测试用例中进入调试器?

相关(部分回答)问题:使用jUnit打破Eclipse中的异常(接受的答案是"如果你在jUnit中调试单个方法,断点就会开始工作.如果在jUnit中调试整个类或包,调试器不会不行.")

java reflection debugging junit exception-handling

9
推荐指数
1
解决办法
2720
查看次数

标签 统计

debugging ×1

exception-handling ×1

java ×1

junit ×1

reflection ×1