2012-07-12 29 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.

顺便说一句库存单元测试是非常耗时的,并且给您带来一点好处,因为通常存储库中的逻辑不多。我宁愿接受验收测试,这些验证测试会执行所有系统并证明该功能已实施。