【问题标题】:Break on Exception in Eclipse using jUnit使用 jUnit 在 Eclipse 中打破异常
【发布时间】:2010-11-10 16:10:12
【问题描述】:

在 jUnit 的调试模式下,有没有办法让 Eclipse 中断未捕获的异常?执行 main() 时 Eclipse 中断正常。有我可以使用的命令行开关吗?

谢谢

【问题讨论】:

    标签: java eclipse debugging junit


    【解决方案1】:

    如果您在调试模式下运行,这应该是更高版本 Eclipse 的默认行为。

    【讨论】:

    • 有趣。只有当我在 jUnit 测试中出现错误时才会发生这种情况。
    【解决方案2】:

    您必须从菜单中选择运行 -> 调试。然后 Eclipse 将在您的代码中出现异常和断点时停止。

    【讨论】:

      【解决方案3】:

      从调试的角度来看,您可以准确筛选出您感兴趣的异常。

      在断点视图中有一个“J!”按钮。这将打开一个窗口,让您可以选择要中断的异常。

      如果问题仅在 JUnit 测试时出现,您需要确保在调试模式下启动测试。 JUnit 中的 Rerun 按钮将以“正常”模式运行。 要在调试中运行测试,您可以右键单击该文件并从菜单中选择“Debug as -> JUnit Test”。

      【讨论】:

      • 感谢您的洞察力。我正在调试 -> JUnit 测试。它在断点处停止,但不在异常处。似乎 JUnit 吞下了异常(可能带有某种 try/catch 块)。该代码是 junit.framework.TestCase 的子类。异常是由“int i=1/0;”引起的用于测试。
      • 我绝对可以重现您的问题。我以前从未有过这种行为。我在 3.5 发行说明中发现了以下注释:在 Sun 的 1.6.0_14 虚拟机上调试应用程序的开发人员应该知道断点是不可靠的(即不要总是暂停执行)。该问题出现在 Windows 和 Linux 平台上。此时,这似乎是 VM 而不是 Eclipse 的问题。解决方法是使用 1.6.0_13 虚拟机。 (错误 279137)。
      • 降级是否解决了您的问题?我尝试了 1.6.0_13 并没有改变任何东西。我很确定降级已经生效,但不确定如何验证。
      • 我刚试过。这对我来说也没有什么不同。您可以通过查看测试的调试启动器配置来进行验证。在 JRE 选项卡下,它应该告诉您您正在使用哪个 jre。
      • 我用 testNG ... 1.6.0_16 得到了这个
      【解决方案4】:

      正如 Thorbjørn Ravn Andersen 所说,这是自 Eclipse Ganymede 以来的默认行为。
      如果未启用,请转到
      Window->Preferences
      Java->Debug
      [X] Suspend execution on uncaught exceptions

      它非常有用,但可能很烦人,所以试着找出最适合你的选择。

      【讨论】:

        【解决方案5】:

        如果您在 jUnit 中调试单个方法,则断点开始起作用。如果在 jUnit 中调试整个类或包,则调试器不起作用。

        【讨论】:

          猜你喜欢
          • 2019-11-19
          • 2010-10-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-09
          • 1970-01-01
          • 2013-03-27
          • 1970-01-01
          相关资源
          最近更新 更多