Asp.net mvc 我们可以使用MVC的单元测试视图(';V';)吗?
重复: 有没有办法打开单元测试视图? 我确信我们可以测试模型和控制器,但不知道如何对视图进行单元测试Asp.net mvc 我们可以使用MVC的单元测试视图(';V';)吗?,asp.net-mvc,unit-testing,Asp.net Mvc,Unit Testing,重复: 有没有办法打开单元测试视图? 我确信我们可以测试模型和控制器,但不知道如何对视图进行单元测试 这个视图值得测试吗?视图现在没有放弃代码吗?那么你打算测试什么呢?如果您正在测试控制器,那么您只需要一个成功的视图结果来显示视图工作。这将开始拖累任何规模较大的项目进行持续集成和构建,而不是麻烦地预编译视图或其他任何东西。据我所读(在Steven Sanderson的Pro ASP.NET MVC框架中),视图不值得测试。ASP.NET MVC视图可以使用各种引擎生成,例如默认的轻量级ASPX,
这个视图值得测试吗?视图现在没有放弃代码吗?那么你打算测试什么呢?如果您正在测试控制器,那么您只需要一个成功的视图结果来显示视图工作。这将开始拖累任何规模较大的项目进行持续集成和构建,而不是麻烦地预编译视图或其他任何东西。据我所读(在Steven Sanderson的Pro ASP.NET MVC框架中),视图不值得测试。ASP.NET MVC视图可以使用各种引擎生成,例如默认的轻量级ASPX,或者。对于ASPX输出,您可以运行一些HTML语法检查器工具,对于其他视图引擎,视图成功编译应该是一个足够好的测试;) 我不认为对视图进行单元测试有什么意义,因为它们不包含太多逻辑。但是,您可以使用类似的工具进行一些集成测试/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"));
}
}
您不应该尝试使用这样的工具来测试所有内容。选择应用程序的一些关键功能,并为它们编写测试 你可以。这很有帮助。否则,我认为这不值得。毕竟,你只对两件事感兴趣。视图是否编译,是否有任何异常(null、越界异常或类似)
有一些人声称你不应该在视图中包含任何逻辑。为任何事情写助手。在这种情况下,编译几乎就是您想要的一切
我们决定投资于WatiN测试。它测试视图,同时测试整个应用程序。有一些很好的助手,但需要经常维护。对于那些在测试视图中看不到价值的人。。。。如何确保视图在元素上具有正确的属性,或者视图绑定正确 许多人回答“在更高的层次上”(比如运行站点和使用诸如selenium或等效工具)
然而,这些技术几乎不可能证明错误源在视图本身,并且还需要对服务器端代码进行大量更改,以便以有针对性的方式呈现视图。这是对视图进行单元测试的重复?对于您的视图,您希望测试什么?他们可能需要单元测试哪些功能?如果是客户端功能,则对脚本进行单元测试;如果是服务器端,则对控制器进行单元测试。。。严肃地说:关于视图的测试是什么?我肯定不会在我的项目中有任何.aspx.cs文件,但我们确实在aspx页面的服务器标记中编写了一些代码。Thinkg是这样的,这些代码应该非常简单,不需要任何详细的测试。如果您有很多条件和循环,那么您需要考虑更改控制器以提供更好的结构化模型。我希望这有帮助,MVC绝对值得费心:)Url.Content(“~”/something)值得为它编写一些自动化测试。验证这些文件是否仍然存在或是否正确解决是值得的自动化。我同意Maslow的观点,应该对此进行自动化测试,但我建议这要比单元测试(严格意义上)做得更远。也许可以使用Specflow之类的工具,或者更进一步地使用selenium测试来检查链接是否指向您期望的位置以及是否可以遵循。视图可能会编译,但仍然无法找到其内容引用。WatiN的投资结果如何?您可能会以这种方式开发整个系统集成测试,因为现在没有WatiN的单元测试了,是吗?你可能会改用硒,还是使用静水?无论如何让我们知道这次体操比赛的结果。。。我可能不是唯一感兴趣的人。这更有可能是系统集成测试,而不仅仅是基本的集成测试。大爆炸风格。。。我只是想澄清一下。。。