2012-07-12 58 views
0

我正在使用asp.net mvc3構建我的網站。我有以下幾層。單元測試您的mvc3應用程序的步驟?

控制器 - >服務 - >庫

我剛開始我的項目,不要有任何那裏。我首先從界面開始。

public interface IRepository<T> 
{ 
    T Get(int id); 
    void Save(T item); 
    void Delete(int id); 
} 


public interface IUserRepository : IRepository<User> 
{ 
    User GetUserByLogin(UserLoginViewModel userLogin); 
} 

在這一點上,我應該先寫單元測試還是先實現接口,編寫具體的存儲庫方法,然後根據我編寫的方法進行單元測試。

我很困惑,不確定哪一步應該先走。

+2

查看關於Asp.NET MVC的Steve Sanderson書籍。他會帶領您完成一個MVC應用程序,其中包含完美細節的單元測試。我猜測你對於MVC和單元測試(TDD)都太陌生,試圖自己去解決它們。 – BZink 2012-07-12 20:51:12

+0

編寫單元測試的目的是什麼?你爲什麼這麼做?一旦你知道了目的,一切都將變得清晰。 – 2012-07-13 05:01:01

回答

1

正如我在你的another question中指出的那樣,理想情況下,你正在編寫外部測試,定義外部對象需要的依賴關係,並嘲笑它們。這使您可以使用良好的API完成依賴關係的完整接口。

因此,在本例中,您將在爲用戶控制器編寫測試時創建IUserRepository接口。然後你創建一個實現這個接口的類,然後開始爲你的庫實現編寫測試。

另一種選擇(我喜歡甚至更好) - 迭代實現你的系統通過垂直切片:

  1. 你寫一些測試你的控制器
  2. 你決定控制器需要存儲庫功能(如Save
  3. 您添加的功能庫接口
  4. 你嘲笑這個接口控制器測試,並把它傳遞
  5. 你寫TE st對於Save存儲庫實現方法並使其通過
  6. 此時所有片都被測試並工作。您返回到步驟1.

順便說一句庫存單元測試是非常耗時的,並且給您帶來一點好處,因爲通常存儲庫中的邏輯不多。我寧願接受驗收測試,這些驗證測試會執行所有系統並證明該功能已實施。