在保證多級認證模塊已被專門的單元測試覆蓋的情況下,我們在為業務邏輯編寫單元測試的過程中可以考慮跳過多級認證授權模塊(對于部分特權用戶,也應跳過部分檢查),直接為其分配一個 Mock 的 sessionId,以進行后續處理。
對于多級認證問題本身,我們可以考慮采用 Chain of Responsibility 模式將不同的認證邏輯封裝到不同的 RequestHandler 中,并通過編碼或者根據配置,將所有的 Handler 串聯成 Responsibility Chain ;而在單元測試過程中,可以修改 Handler 的串聯方式,繞過部分不希望在單元測試中經過的 Handler,從而簡化單元測試的運行。
對于這個問題,筆者并不同意為了單元測試的需要去采用 Chain of Responsibility 模式,實際上,上面所闡述的多級認證問題本身比較適合采用這種模式來解決,能夠根據需要繞過部分實現,只是應用這種模式的情況下進行單元測試的一種可以考慮的測試途徑。
總結
單元測試是軟件開發的重要組成部分,而應用 Mock Object 是進行單元測試一種普遍而有效的方式,通過在軟件設計、開發的過程中合理地運用設計模式,不但為系統重構、功能擴展及代碼維護提供了方便,同時也為單元測試的實施提供了極大的靈活性,可以有效降低單元測試編碼的難度,方便地在單元測試中引入 Mock Objects,達到對被測試目標進行單元測試的目的,從而更好地保證軟件開發的質量。
文章來源于領測軟件測試網 http://www.kjueaiud.com/