在JUnit测试中显示(意外)异常消息(Netbeans)

时间:2016-10-06 17:45:35

标签: java netbeans junit netbeans-8

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

实施例

  

someFailedTest导致ERROR:at(堆栈跟踪线从这里开始)

没有尽可能有用。

虽然堆栈跟踪确实可以让我们找到问题发生的位置,但如果NB还显示任何伴随异常的消息,那将会很好。 (例如" x必须> 0但是-2和#34;或者其他。)

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

我可以使用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);

2 个答案:

答案 0 :(得分:0)

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

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

我不知道任何允许你告诉Netbeans / JUnit显示未捕获异常/ throwable消息的设置。

答案 1 :(得分:0)

My Netbeans显示了该消息。这是一个例子:

junit example with message

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

以下是您发布的示例。该消息也在此处可见。

second junit example with message