从intellij / android studio中的jUnit获取标准错误输出

时间:2015-06-24 15:23:36

标签: intellij-idea android-studio

我正在Android Studio中运行测试,但我相信这也是一个Intellij问题。测试通过很好,但仔细观察后,我发现有一个堆栈跟踪输出到测试控制台。不幸的是,当测试完成时,输出被清除。有谁知道我在哪里可以找到这些日志?我查看了Intellij日志,但是jUnit运行器似乎没有将它们记录在那里,这是有道理的。

1 个答案:

答案 0 :(得分:1)

IntelliJ IDEA中的这种错误行为。它主要发生在快速运行测试中。它通过IDEA-66683 Output from fast running parameterised JUnit test is not grouped correctly报告为一个错误,并且有很多重复。对于即将推出的IntelliJ IDEA版本15,该票据被标记为已修复。它可能会在某些时候合并到Android Studio中。

该错误主要发生在快速运行的测试中。例如,在下面的测试中,当我在类中运行所有测试时,在查看该个体时,我将看不到System.err输出(有时甚至不是System.out输出)测试结果

@Test
public void simpleTest()
{
    System.err.println("Std Err from simpleTest");
    System.out.println("Std out from simpleTest");
    new RuntimeException("A sample Exception").printStackTrace();
}

但是,我将进行此测试,最后添加延迟

@Test
public void simpleTest()
{
    System.err.println("Std Err from simpleTest");
    System.out.println("Std out from simpleTest");
    new RuntimeException("A sample Exception").printStackTrace();
    try {TimeUnit.SECONDS.sleep(2);} catch (InterruptedException ignore) {}
}

延迟1秒,我没有看到结果。但是有2秒,我做到了。我的怀疑是一个问题,IntelliJ IDEA需要一些时间来“抓取”每个单独测试的输出并将其放入某种缓冲区或集合中进行该测试。但是,如果测试在该过程完成之前结束,则不会显示该单个测试结果的输出。这似乎是System.err而不是System.out的问题,但有时我看到它发生在后者身上。

这是坏消息。好消息是输出可以通过其他方式看到......

如果您运行单个测试,通常可以通过选择测试名称来查看所有输出。如果你在一个类中运行所有测试,如上所述,system.err输出在查看单个测试结果时可能并非全部可见 。但是,如果通过选择树顶部的类名来查看所有测试组合输出,则可以看到组合输出(应该)具有所有测试的输出。不幸的是,它混杂在一起。更糟糕的情况是,单独运行测试,以便您可以更清楚地看到详细信息。