2016-06-29 99 views
3

我正在運行JUnit測試作爲我的Android應用程序測試的一部分。在這種情況下,它只是測試我們依賴的API的響應,可能會頻繁更改(以便驗證以後的測試)我可以在JUnit測試中打印信息消息嗎?

當這些測試通過Android Studio的輸出窗口時,不顯示任何消息。我們反而想用每條消息說明它正在測試哪個端點(例如「Tests/oranges // segments」),以便消息始終顯示爲測試通過和失敗的第一條消息。

我嘗試了android日誌Log.println(Log.ASSERT, "...", "..."),但沒有顯示在android studio輸出中。

有沒有辦法做到這一點?輸出窗口,我指的是下面顯示的一個

enter image description here

(當測試被標記爲忽​​略,您可以提供的消息顯示,我只是想爲我的其他測試相同的行爲)

回答

9

老式Java風格System.out.println();將工作。

+3

它不適用於junit4.12 –

+0

我正在使用Andrid Studio 2.1.2,將JUnit 4.12作爲項目依賴項,它適用於我。見另一個答案.. @ xcesco提出了與他的第一個選擇相同的方式。 –

+1

哈,現在它可以工作,這是一個很大的驚喜,謝謝!值得一提的是,您可以使用System.err提供錯誤詳細信息。 –

4

JUnit測試不是在Android設備(或仿真器)上執行,而是在PC環境中的Java虛擬機上執行。你有兩個解決方案:

  • 只需使用一些記錄器(如log4j,JDK記錄器等)或只是使用System.out。
  • 使用Roboletric及其能力來定義陰影類來重新定義Log類。

我建議你第二種方法。 Roboletric已經有了一個影子類的日誌。要輸出重定向到控制檯

@Before 
public void setUp() throws Exception { 
     ShadowLog.stream = System.out; 
     //you other setup here 
} 

一些參考:

https://guides.codepath.com/android/Unit-Testing-with-Robolectric https://github.com/robolectric/robolectric-samples http://www.vogella.com/tutorials/Robolectric/article.html

希望它能幫助。

+0

已經使用Roboelectric,感謝您的建議 –

+0

完美,我修改我的答案。檢查它並嘗試我寫的代碼 – xcesco