2011-04-29 46 views
1

我刚开始我的第一个MVC3应用程序,我不知道如何进行单元测试。我打算将助手类(通常是静态助手)分解成单独的程序集以及模型类,以便我可以使用NUnit对它们进行测试。单元测试ASP.NET MVC3应用程序(与NHibernate)

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

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

编辑:下面是一些代码示例 - 我现在不在我的开发机器中,所以我没有真正的代码来显示大小写。

具体问题:

  • 如何测试保存模型,而不实际保存到主/生产数据库
  • 范围测试的看法;我应该简单地测试字段存在吗?验证错误消息呢?
  • 控制器:测试范围。我应该测试操作是否触及并按预期变形数据库数据(例如,/ get/id获取该对象;/delete/id删除该对象)?
+0

显示您想单元测试的代码示例。目前你的问题很难回答。 – 2011-04-29 23:16:47

+0

我没有任何复杂的东西(我在这台计算机上没有ASP.NET MVC3),所以我引用了链接。 Starter代码几乎是我的(ActiveRecord/NHibernate模型,标准的ASP.NET MVC3视图和控制器)。 – ashes999 2011-04-29 23:51:11

回答

1

您可以通过各种考验那里,但你需要明智地运用它们取决于你要考什么:

  • 使用单元测试来测试你的控制器,或您的企业逻辑,而不会触及数据库。

  • 通过运行在内存数据库(NHibernate支持并易于设置)上使用集成测试。您可以确保某个场景可以正常工作,例如使用有效的场景,所有的业务逻辑都在工作,控制器将数据传递给持久性机制,并将其正确地传递到数据库中。

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

它是让你的看法(UI)薄膜,并测试UI落后于其他层,如测试UI最好的做法可能不值得所有的麻烦。