单元测试ASP.NET MVC3应用程序(使用NHibernate)

时间:2011-04-29 23:15:44

标签: unit-testing asp.net-mvc-3 architecture

我刚刚开始我的第一个MVC3应用程序,我不确定如何对其进行单元测试。我打算将辅助类(通常是静态帮助程序)分解为一个单独的程序集,以及模型类,以便我可以使用NUnit对它们进行测试。

所以我对助手课很好;但是我如何测试模型类(考虑到它们是为NHibernate注释并与数据库绑定),以及如何测试我的视图和控制器?

测试NHibernate绑定模型以及ASP.NET视图和控制器需要哪些具体工具和技术?我不确定。 NUnit只解决了一些问题。

编辑:以下是一些代码示例 - 我现在不在我的开发机器上,因此我没有显示案例的实际代码。

  • 模特:来自ActiveRecord documentation
  • 的任何内容
  • 控制器: MVC3 documentation
  • 中的标准HomeController
  • 观点:通过右键单击上下文菜单生成的任何强类型视图(假设为“创建”)(添加>查看)

具体问题:

  • 如何在不实际保存到主/生产数据库的情况下测试保存模型
  • 测试视图的范围;我应该只测试字段存在吗?验证错误消息怎么样?
  • 控制器:测试范围。我应该测试那些操作是否按预期触摸和变形数据库数据(例如/ get / id获取该对象; / delete / id删除该对象)?

1 个答案:

答案 0 :(得分:1)

你可以通过各种测试来实现,但你需要明智地应用它们,具体取决于你要测试的内容:

  • 使用单元测试来测试您的控制器或您的业务逻辑,而无需访问数据库。

  • 通过在内存数据库(NHibernate支持且易于设置)上运行来使用集成测试。您可以确保方案确实有效,例如使用有效的方案,所有业务逻辑都在工作,您的控制器将数据传递给持久性机制,并且它正确地进入数据库。

  • 您可以使用Selenium之类的框架来进行UI测试,但只能在真正需要的地方使用它,因为它不像以前的两种类型的测试那样容易,并且会变得难以维护和脆弱。

最佳做法是保持您的视图(UI)精简,并测试UI后面的其他图层,因为测试UI可能不值得所有麻烦。