簡體   English   中英

單元測試異步代碼是一個好習慣嗎?

[英]Is it a good practice to unit test asynchronous code?

通過讓線程等待異步代碼完成來測試異步代碼絕對是可能的。 但是,是否鼓勵測試異步代碼。 還是應該把邏輯分開,只測試同步部分?

例如,在我的應用程序中,我將進行 REST API 調用以從服務器獲取 json,然后我需要解析 json。

有兩種方法:

  1. 整體測試抓取和解析。 我們可以使用MockWebServer來模擬超時和響應。

    - 缺點:它會帶來一些復雜性。

  2. 只測試解析部分,因為我們無法控制API調用部分; 它由okhttp控制

    --缺點:難以涵蓋超時情況。

由於您的問題專門詢問“單元測試”,因此簡單的答案是“否”。 除非您測試的單元對 Async 調用的結果不感興趣,否則它不是您單元的一部分。單元測試應該只確保您的單元正常工作。 在這種情況下,您應該驗證 Async 調用是否正確調度(因此這將是一個白盒測試)。

測試按層次結構組織。 最低級別的測試邏輯,下一級測試如何在框架內調用邏輯(在您的情況下,異步 http),最后,使用瀏覽器進行手動測試(如果您正在制作網站)。 必須測試所有級別。 通常所有程序單元都運行良好,但應用程序卻沒有。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM