我们可以单独测试MVC的View('V')吗?

时间:2009-06-17 08:35:30

标签: asp.net-mvc unit-testing

  

重复:Unit Testing the Views?

有没有办法进行单元测试View? 我相信我们可以测试Model&控制器但不知道如何单元测试View?

值得测试View吗?

5 个答案:

答案 0 :(得分:9)

你可以enable compilation of MVC views。这有很大帮助。否则,我认为这不值得。毕竟,你感兴趣的只有两件事。视图是否编译并且你得到任何异常(null,超出范围的例外或类似)?

有些人声称您不应在视图中包含任何逻辑。为任何事情写助手。在这种情况下,编译几乎是你想要的一切。

我们决定投资WatiN测试。它测试视图,同时测试整个应用程序。有一些好帮手,但需要不断维护。

答案 1 :(得分:7)

现在还没有看到废弃的代码?那你要测试什么?如果您正在测试控制器,那么您只需要一个成功的视图结果来显示视图的工作原理。而不是去预编译视图或其他什么的麻烦,这将开始拖延任何大型项目在持续集成和构建方面。

答案 2 :(得分:3)

根据我的阅读(在Steven Sanderson的Pro ASP.NET MVC框架中),视图不值得测试。 ASP.NET MVC视图可以使用各种引擎生成,例如默认的轻量级ASPX,或者例如http://www.stringtemplate.org/。对于ASPX输出,您可能运行一些HTML语法检查工具,对于其他视图引擎,视图编译成功的事实应该是一个足够好的测试;)

答案 3 :(得分:3)

我没有看到单元测试视图的重点,因为它们没有太多逻辑。但是,您可以使用WatiN等工具进行一些集成测试/ UI测试。

用WatiN编写的测试示例:

[Test]
public void SearchForWatiNOnGoogle()
{
   using (IE ie = new IE("http://www.google.com"))
   {
      ie.TextField(Find.ByName("q")).TypeText("WatiN");
      ie.Button(Find.ByName("btnG")).Click();

      Assert.IsTrue(ie.ContainsText("WatiN"));
  }
}

您不应该尝试使用这样的工具测试所有内容。选择应用程序的一些关键功能,并为它们编写测试。

答案 4 :(得分:0)

对于那些在测试视图中没有看到值的人....如何确定视图在元素上具有正确的属性,或者它是否正确绑定?

许多人回答“更高层次”(例如运行网站并使用硒等工具)。

然而,这些技术几乎不可能证明错误的来源在视图本身中,并且还需要对服务器端代码进行大量更改,以便可以有针对性地呈现视图。