2
我正在爲我公司的一個Android應用程序編寫單元測試。由於某些測試檢查Logcat輸出中是否存在某些行,我想在每次測試運行前清除日誌。什麼是確保Logcat日誌清除的好方法?
我知道這樣做的基本命令是logcat -c
。這個過程不是即時的,需要幾秒鐘,但因爲它發生在一個單獨的線程上,所以測試用例中的下一個命令會立即執行並可能返回不正確的結果。一種解決方法是添加強制等待。所以我的基本代碼如下所示:
private void clearLogs() throws Exception {
Runtime.getRuntime().exec("logcat -c");
Thread.sleep(2000);
}
迄今爲止,這一直沒有問題。但是,我的經理希望代碼能夠處理清除日誌需要任意時間的情況。例如,假設有一個假設的情況,其中清除日誌需要20秒。我會如何去做這件事?
我確實發現涉及創建一個過濾器,以獲得僅在一定的時間標記後寫入的項目的解決方案:
NOW=$(date +"%m-%d %H:%M:%S.000") ; adb logcat -T "$NOW"
這通常會刪除需要完全清楚loogs。然而,它不適合我,因爲Logcat給我一個「無效選項 - T」的錯誤。
任何人有任何解決方案?
依賴logcat輸出似乎不是編寫單元測試的好方法。有一個'Log'的包裝(如'Timber')並驗證與它的交互似乎是一個更好的方法。 – Emmanuel