【问题标题】:Showing (unexpected) exception messages in JUnit tests (Netbeans)在 JUnit 测试 (Netbeans) 中显示(意外)异常消息
【发布时间】:2016-10-06 17:45:35
【问题描述】:

当 JUnit 测试收到 unexpected RuntimeException 时,NetBeans 测试结果选项卡会显示失败测试的名称,后跟堆栈跟踪。

例如

someFailedTest 导致错误:在(堆栈跟踪行从此处开始)

没有任何帮助。

虽然堆栈跟踪确实让我们能够追踪问题发生的位置,但如果 NB 也显示任何伴随异常的消息,那就太好了。 (例如,“x 必须 > 0 但为 -2”,或其他。)

据我所知,它似乎没有提供详细信息。有没有办法显示我缺少的异常详细信息?

我可以使用 try/catch 或错误日志,但有更好的方法吗?

这是一个(假的)“测试”示例,它在 Eclipse 中清楚地显示了一条消息,但在 NB 中却没有。欢迎任何见解......是的,我知道这不是一个异常,但它是同一类型的问题。

    @Test
    public void testTest() {

        String file = "test";
        File f = new File("../" + file);
        if (!f.exists()) {
            Assert.fail("File was not found at " + file);
        }
    }

编辑... 是的,现在有点困惑 - 我已经看到它至少可以正常工作一两次,但我现在无法重现它。我得看看我是否可以在以后发布屏幕截图的地方重现......

编辑 #2... 发现了一些奇怪的行为。如果我这样做(这将是我今天的解决方法),测试结果列表看起来仍然相同,但我确实在控制台中收到一条漂亮的红色且非常有用的错误消息:

String msg = "FXML file was not found at " + file;
System.err.print("test");
Assert.fail(msg);

但是如果我完全注释掉 System.err 行,我在控制台中什么也得不到。更奇怪的是,如果我放一个空字符串,我仍然在控制台中什么也得不到(好吧,也许 print() 足够聪明,可以忽略空字符串..):

String msg = "FXML file was not found at " + file;
System.err.print("");
Assert.fail(msg);

【问题讨论】:

  • 我无法重现您所描述的问题,如我的回答中所述。另外,我很困惑您说的是“NetBeans 测试结果选项卡”,但稍后又提到了“控制台”。您能否发布您所看到的“NetBeans 测试结果选项卡”的实际屏幕截图以及您正在使用的确切测试代码?
  • 我意识到这很令人困惑,因为我还不能放一个屏幕截图 - 今晚会尝试获取它,这样会更有意义。

标签: java netbeans junit netbeans-8


【解决方案1】:

我知道这不是你想听到的,但我相信做你想做的事的标准方法是像这样使用 try-catch:

try{
    ....
}catch(Throwable t){
    //Add some code to print the details of the Throwable here
    fail(t.getMessage());
}

我不知道有任何设置可以让您告诉 Netbeans/JUnit 显示未捕获异常/可抛出的消息。

【讨论】:

  • 如果这就是答案,我猜就这样吧 - 我觉得 Eclipse (IIRC) 可能会更好地处理这个问题,但可能记错了......
【解决方案2】:

我的 Netbeans 显示该消息。这是一个例子:

也许 Netbeans 在某些情况下不会显示该消息。也许您的顶级异常没有与之关联的消息。我使用的是 Netbeans 8.1,并且没有进行任何相关的配置更改。

这是您发布的示例。该消息也可以在此处看到。

【讨论】:

  • 实际上我只是在 Eclipse 中对其进行了测试,除非我失明,否则它会显示一条在 NB 中没有显示的消息。现在用一个例子更新问题。
  • 我仍然收到您的示例测试的消息,@Manius。查看我的更新。
  • 是的,我刚刚再次运行它并注意到同样的事情一次,但稍后再次运行并没有显示任何消息!我不确定现在到底发生了什么 - 需要做一些测试......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 2011-08-20
  • 1970-01-01
  • 1970-01-01
  • 2013-02-19
相关资源
最近更新 更多