有没有人使用史蒂夫桑德森的MvcIntegrationTestFramework?

时间:2009-08-13 17:41:13

标签: asp.net-mvc testing automated-tests integration-testing

我正在研究测试ASP.NET MVC应用程序的其他方法,并遇到了Steve Sanderson的MvcIntegrationTestFramework。这种方法看起来很有希望,但我想知道是否有人有任何实际经验可以分享。

4 个答案:

答案 0 :(得分:7)

我从中获得了一些非常好的结果。我不关心这里有什么人说测试视图的必要性,只要你将第一行代码添加到视图中,即使代码严格与表示相关,你也会引入错误的可能性。编写自动化测试是个好主意。我的主要兴趣是尽可能多地捕获白屏和黄屏异常/错误。为此,我一直在使用Steven的介绍性博客文章中的片段,以确保正确呈现页面而不会抛出任何异常:

Assert.IsTrue(result.ResponseText.Contains("<!DOCTYPE html"));

我在这个框架中看到的小陷阱可能是:

  • 如果您的网站在视图和操作方法之间进行了一些非常复杂的模型绑定,您可能会发现自己创建了一些非常大的NameValueCollections,例如在此示例中(实际上采用LogonModel视图模型对象的操作方法),我没有看到任何方法通过使用此框架将任何复杂的视图模型对象类型传递到您的操作方法中:

var result = browsingSession.ProcessRequest("/account/logon", HttpVerbs.Post, new NameValueCollection { {"UserName","myName"}, {"Password", "myPassword"}, {"returnUrl", "/home/myActionMethod"} });

  • 执行browseSession.ProcessRequest(“url”)会创建一个应用程序主机/上下文,它实际上使用您正在测试的项目中的配置执行您正在测试的Web代码。这意味着测试运行起来有点慢,并且可能会修改实际数据,因为我没有看到通过使用内置的任何工具,使用虚假版本更换您的Web项目中的数据访问存储库的快速简便方法测试框架。换句话说,您可能需要使用一些基于web.config的方法来自己动手。

答案 1 :(得分:1)

在前一段时间阅读ardave's answer之后,我们实际上已经为我们自己的基于Orchard的新应用程序Marinas.info进行了尝试。

首先,我建议任何人从this version的分支开始,因为它比原始设置更容易设置。

对于任何“普通”MVC3应用程序,它只是起作用。不幸的是,它与Orchard一起表现不佳,至少没有使用未经修改的Global.asax.cs版本。所以我们仍然关注browser based testing road,但我们继续使用它在应用程序内部执行Orchard命令,这是足够快的。

答案 2 :(得分:0)

我没有使用过这个框架。但根据我阅读他的书的经验 - Pro ASP.NET MVC Framework,以及他开发的另一个验证框架xVal,我会说“他很棒”。

答案 3 :(得分:0)

稍微进行实验,在某些情况下它可能非常有用。一般竖起大拇指,如果我看到进一步的工作,我将用于未来的项目。

没有继续进行WatIn设置并处理一些我不想在此框架中再次解决的问题。例如。通过对话框进行身份验证,这可能需要更改代码。