2015-06-24 36 views
0

我正在Android Studio中運行測試,但我相信這也是一個Intellij問題。測試通過的很好,但仔細觀察後,我發現堆棧跟蹤輸出到測試控制檯。不幸的是,當測試完成時,輸出被清除。有誰知道我可以在哪裏找到這些日誌?我查看了Intellij日誌,但jUnit runner似乎沒有在那裏記錄它們,這是有道理的。從intellij/android studio中獲取jUnit的標準錯誤輸出

回答

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.errSystem.out更多的問題,但有時我已經看到它發生在後者。

這是個壞消息。好消息是,輸出可以用其他方式看到...

如果您運行單個測試,通常您可以通過選擇測試名稱來查看所有輸出。如上所述,如果您在班級中運行所有測試,則在查看單個測試結果時,system.err輸出可能不會全部可見。但是,如果通過選擇樹頂部的類名查看所有測試組合輸出,則可以看到合併輸出(應該)具有所有測試的輸出。不幸的是,它混雜在一起。更糟糕的情況是,單獨運行測試,以便更清楚地看到細節。

+0

謝謝,我不清楚這是Intellij的錯誤還是我錯過了一些東西。 – trev9065

相關問題