我的單元測試失敗,android.util.Log中的方法d沒有被模擬,但只有當我運行testDebug。 如果運行testRelease一切正常,並且它們正確傳遞。 有誰知道爲什麼會發生這種情況? 從控制檯和Android Studio運行gradle時會發生同樣的情況。Android單元測試失敗調試生成類型
5
A
回答
1
下面是我解釋這個如何爲將來的參考。 測試工作在調試但未發佈的問題是由於Log.d(以及來自android框架的朋友)未正確模擬的事實。 構建爲發佈版時,其工作原因是我們的日誌記錄基於build config中的此屬性進行了有條件的處理。基本上我們有if(BuildConfig.type!=「Release」)Log.d(...),並且由於編譯器因最終值而刪除了該塊,所以在測試發佈時它不會被調用。 模擬靜態方法Log.d我使用了PowerMock。嘲笑很容易,但設置Power Mock真的很麻煩,所以可能會有更多的方法來做到這一點。
0
結帳"Method ... not mocked"在Android Studio項目網站上的鏈接。 它說:
用來運行單元測試不包含任何實際的代碼的android.jar文件 - 由Android系統的圖像在實際設備上提供。相反,所有方法都會引發異常(默認情況下)。這是爲了確保您的單元測試只測試您的代碼,並且不依賴於Android平臺的任何特定行爲(您未明確嘲笑例如使用Mockito)。如果這個被證實有問題的,你可以在下面添加片段到您的build.gradle改變這種行爲:
build.gradle
android {
// ...
testOptions {
unitTests.returnDefaultValues = true
}
}
我們都知道,默認行爲使用類,如日誌或文本實用程序,並就當是有問題評估未來版本中的可能解決方案
我剛剛使用上述擺脫了現在的例外。
相關問題
- 1. 簡單的android單元測試失敗
- 2. Android單元測試在調試中失敗,否則通過
- 3. Android:如何使單元測試失敗
- 4. Grails單元測試失敗
- 5. mystyfing單元測試失敗
- 6. 單元測試不失敗
- 7. Umbraco單元測試失敗
- 8. 單元測試Assert.AreEqual失敗
- 9. 單元測試失敗8
- 10. Ruby單元測試 - 訪問測試結果(成功/失敗)?
- 11. CGFloat導致iPhone單元測試捆綁失敗生成
- 12. Grails的生成單元測試失敗的一代
- 13. C#單元測試生成
- 14. 爲什麼大型Android活動單元測試失敗?
- 15. 當結果類型爲瓦時,單元測試失敗
- 16. 簡單方程失敗單元測試
- 17. Android單元測試枚舉類型
- 18. VS2010中的單元測試 - 「調試」通過,「運行」失敗
- 19. 單元測試失敗時不處於調試模式
- 20. Android單元測試:由於類錯誤導致儀表失敗
- 21. 單元測試:在父測試類中生成被測單元的模擬
- 22. CruiseControl.rb:測試失敗,但生成傳遞
- 23. visual studio調試單元測試集成
- 24. Android的單元測試運行所有類的測試失敗,但每個單獨的方法成功運行
- 25. 單元測試android類
- 26. Android:測試改造成功,失敗
- 27. 測試失敗時生成nunit測試結果
- 28. Rspec單元測試用例失敗
- 29. 隨機單元測試失敗
- 30. 單元測試失敗,出現sys.exit