2009-04-14 27 views

回答

2

如果用戶指的是系統用戶,例如windows登錄 - 然後進行單元測試,最好是將你的代碼與這個依賴關係解耦。

通過這個我的意思是讓你的代碼有一個用戶的內部概念,很容易在單元測試中設置。然後,大部分代碼只會瞭解這個內部概念,並且可以測試而不用擔心真正的登錄。

然後將要測試的較硬層(將系統用戶以及您從中獲得的所有內容(例如文件夾位置,權限等映射到您的內部登錄名的層)最小化。 然後可以使用某些類型的可以處理高級別登錄的驗收測試來測試此圖層。

+0

我目前正在使用的應用程序是一個ASP.NET Web應用程序,所以用戶基於特定於應用程序的權限,但對於我過去一直工作的其他項目來說,這絕對是明智的建議。 – rjzii 2009-04-14 13:29:00

1

爲不同類型的用戶創建單獨的測試,並模擬它們的日誌記錄(或正在記錄)。這樣,您可以根據用戶權限爲每種類型的用戶測試應該是哪種行爲。

如果應用程序的內部狀態也起作用,那麼您幾乎堅持爲每個(合理的)方案創建測試。

+0

對於我的應用程序,您可以查看和訪問的內容部分取決於您的用戶權限。我厭倦了讓問題本身保持通用。 – rjzii 2009-04-14 13:22:52

0

如果定義行爲僅僅是登錄用戶類型,那麼它很容易就爲每個用戶類型編寫一個測試[最終進行n次測試; n是用戶類型的數量]。

如果它是某個內部系統狀態和用戶類型之間的組合,則爲每個用戶類型的每個狀態編寫一個測試[最終使用n * m測試; n是用戶類型的數量,m是內部系統狀態的數量]。

1

我假設有一些提供者說「此用戶可以執行此操作」或「對此用戶執行此操作」。

如果是這種情況,您只需爲該提供程序創建一個存根並讓它針對您要測試的情況返回不同的東西。

如果不是這樣,我會創建這樣的提供者。

狀態也是一樣:將狀態存儲在一個狀態保持類中,並詢問它處於什麼狀態。在測試環境中,爲其創建一個存根。

當然,你也可以單元測試國家班。

相關問題