如何使用asp.net mvc和单元测试来组织代码和测试

时间:2011-03-29 18:31:02

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

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

我对所涉及的概念有一个模糊的理解,也就是说有点超出“Hello World”级别,但仍然很绿。我已准备好让橡胶遇到这条路,但是 在过去的半小时里,我发现自己正盯着VS中的“新建项目”对话框...... 你是如何组织单位测试的呢?

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

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

4 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:2)

  

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

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

这样的例子
  • 控制器
  • 模型
  • 映射器
  • 验证器 ...

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

答案 2 :(得分:1)

我的格式通常是这样的:

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)

答案 3 :(得分:0)

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