![](/img/trans.png)
[英]considering NullPointerException as a unit test failure: is it good practice?
[英]Is it a good practice to unit test asynchronous code?
通過讓線程等待異步代碼完成來測試異步代碼絕對是可能的。 但是,是否鼓勵測試異步代碼。 還是應該把邏輯分開,只測試同步部分?
例如,在我的應用程序中,我將進行 REST API 調用以從服務器獲取 json,然后我需要解析 json。
有兩種方法:
整體測試抓取和解析。 我們可以使用MockWebServer
來模擬超時和響應。
- 缺點:它會帶來一些復雜性。
只測試解析部分,因為我們無法控制API調用部分; 它由okhttp
控制
--缺點:難以涵蓋超時情況。
由於您的問題專門詢問“單元測試”,因此簡單的答案是“否”。 除非您測試的單元對 Async 調用的結果不感興趣,否則它不是您單元的一部分。單元測試應該只確保您的單元正常工作。 在這種情況下,您應該驗證 Async 調用是否正確調度(因此這將是一個白盒測試)。
測試按層次結構組織。 最低級別的測試邏輯,下一級測試如何在框架內調用邏輯(在您的情況下,異步 http),最后,使用瀏覽器進行手動測試(如果您正在制作網站)。 必須測試所有級別。 通常所有程序單元都運行良好,但應用程序卻沒有。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.