【问题标题】:How to organize code and tests with asp.net mvc and unit testing如何使用 asp.net mvc 和单元测试来组织代码和测试
【发布时间】:2011-07-25 12:48:53
【问题描述】:

所以,我咬紧牙关,尝试开始使用 asp.net MVC、单元测试和 TDD。

我对所涉及的概念有一个模糊的理解,也就是说有点超出了“Hello World”的水平,但仍然很绿色。我已经准备好让橡胶与道路相遇,但是 在过去的半个小时里,我发现自己一直盯着 VS 中的“新建项目”对话框...您究竟是如何组织单元测试的?

我看到使用标准的 VS 单元测试项目类型,它会为单元测试创​​建一个单独的项目。那是我在使用 NUnit 时应该如何进行的吗?还是应该将测试与正在测试的代码放在同一个项目中?

我发现的“单元测试入门...”类型的教程似乎都没有解决这个问题。

【问题讨论】:

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


    【解决方案1】:

    测试应该在单独的项目中维护,因为您不想将测试代码部署到生产环境。对于单项目解决方案,一个测试项目可能就足够了。

    在内部,测试项目可以以任何您认为方便的方式组织,只要它是一致的。一个 ASP.NET MVC 测试项目可能有一个 ControllerTests 文件夹,每个控制器有一个测试 .cs 文件,在某种程度上反映了 MVC 项目结构。这使得测试很容易找到并与他们正在测试的代码相关联。

    【讨论】:

    • 我同意它使遵循 mvc 控制器结构变得更容易,对于任何不知道您可以从控制器类的上下文菜单中单击“添加单元测试”的人,Visual Studio 做了很多为您完成的工作。
    【解决方案2】:

    您究竟是如何组织单元测试的?

    我组织单元测试以反映我的项目结构。例如,如果在我的 ASP.NET MVC 项目中我有

    • 控制器
    • 型号
    • 映射器
    • 验证器 ...

    我的单元测试项目中有这些相同的文件夹。然后对于 MVC 项目中的每个文件,我都有一个相应的单元测试。这是sample project structure I wrote 的示例。

    【讨论】:

      【解决方案3】:

      我的格式通常是这样的:

      MyMvcApp.Web (The Actual Web Application)
        |- Controllers
        |- ViewModels
        |- Views
        |- Framework (For specific override points in the MVC Framework)
      MyMvcApp (The class library that contains my domain specific logic)
        |- SomeFacet (Folder to contain entities, objects, etc)
         |- Repositories
      MyMvcApp.UnitTests (Test project)
        |- SomeFacet (Contains tests for specified folder in class library)
      MyMvcApp.IntegrationTests (Test project)
        |- SomeFacet (Contains tests for specified folder in class library)
      

      【讨论】:

        【解决方案4】:

        更重要的是首先要了解我们需要测试什么以及为此目的可以使用哪些设施。它基本上是您需要关注的应用程序中对象的行为。您有大量的测试框架可供选择,例如 NUnit 等。在您继续进行的同时构建测试项目的结构。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-02-17
          • 2016-07-06
          • 1970-01-01
          • 1970-01-01
          • 2012-12-25
          • 2012-05-12
          • 1970-01-01
          相关资源
          最近更新 更多