在ASP MVC中测试控制器的最佳方法是什么? (模拟框架,IoC,Selenium / Watir / Watin ......)
答案 0 :(得分:3)
当您查看测试金字塔时,测试MVC控制器将属于单元测试。我个人更喜欢以下工具进行单元测试:
NUnit - 因为与MSTest相比,它是一个更加成熟的测试框架,并且有很多有用的附加组件,例如Resharper。
Moq是一个很好的.NET Framework模拟库
Unity是一个很棒的依赖注入框架,您可以从Codeplex下载并支持构造函数,属性和方法注入。
就编写自动浏览器测试代码而言,我有使用WebDriver的经验是一个很好的工具,但是我将自动浏览器测试归类为验收测试,因此与单独测试MVC控制器的关联性较低。
验收测试的另一个很棒的工具是SpecFlow,如果你需要进行验收测试并且在敏捷环境中工作得非常好,那么它绝对值得一看。
答案 1 :(得分:2)
对于个人测试,我使用基于Rhino Mocks的MvcContrib TestHelper。整个HTTP都是模拟的,它提供了一些很好的扩展方法,允许对不同的结果进行断言。
答案 2 :(得分:0)
您还可以在创建MVC项目时创建测试项目,方法是选中复选框以添加测试项目。创建测试项目后,右键单击该项目并添加对MVC项目的引用。添加完之后,我们需要在测试项目中添加System.Web.Mvc的引用,方法是右键单击测试项目,然后选择“管理Nuget包”。从Nuget软件包管理器中,您可以在测试项目中安装Microsoft.AspNet.Mvc。
作为设置测试项目的最后一步,右键单击并添加一个名为HomeControllerTest的类。在新创建的类中,编写一个示例测试方法,如下清单所示。
public class HomeControllerTest
{
[TestMethod]
public void SampleTest()
{
Assert.AreEqual("HomeController", "HomeController");
}
}
现在您已经准备好构建测试项目,并且不会出现任何构建错误。我们已经编写了比较两个字符串的示例测试方法,并运行测试,只需选择Test-> Windows-> Test Explorer,如下图所示。
在“测试资源管理器”中,您将找到列出的SampleTest。要运行测试,请右键单击测试并选择运行,或者单击测试顶部的“运行”。在此示例中,我们运行了SampleTest,该方法已通过!您可以在测试资源管理器中看到通过的测试,如下图所示:
在下面的链接中查看完整的示例: