单元测试你的mvc3应用程序的步骤?

时间:2012-07-12 20:27:50

标签: c# asp.net-mvc asp.net-mvc-3 unit-testing

我正在使用asp.net 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);
}

此时,我应该先开始编写单元测试还是先实现接口,编写具体的存储库方法,然后根据我编写的方法进行单元测试。

我很困惑,不知道应该先走哪一步。

1 个答案:

答案 0 :(得分:1)

正如我在another question中指出的那样,理想情况下,您正在编写外部测试,定义外部对象所需的依赖项,并模拟它们。这允许您使用漂亮的API完成依赖关系的接口。

因此,在此示例中,您将在为用户的控制器编写测试时创建IUserRepository接口。然后创建一个实现此接口的类,并开始为存储库实现编写测试。

另一个选项(我更喜欢) - 通过垂直切片迭代实现您的系统:

  1. 您为控制器编写了一些测试
  2. 您认为控制器需要存储库功能(例如Save
  3. 您将该功能添加到存储库界面
  4. 您为控制器测试模拟此接口,并使其通过
  5. 您为Save存储库实现方法编写测试并将其传递给
  6. 此时所有切片都经过测试并正常工作。您将返回步骤1.
  7. 对存储库进行BTW单元测试非常耗时,并且会给您带来一些好处,因为通常存储库中的逻辑不多。我宁愿选择验收测试,它会运行所有系统并证明该功能已实现。