【问题标题】:Has anyone used Steve Sanderson’s MvcIntegrationTestFramework?有人用过 Steve Sanderson 的 MvcIntegrationTestFramework 吗?
【发布时间】:2010-11-19 09:34:28
【问题描述】:

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

【问题讨论】:

  • 我还没用过,但是将浏览器从集成测试中解耦的想法非常吸引人。
  • 但对我来说,集成意味着,嗯,层的集成。而浏览器(尤其是 javascript 和 ajax)确实是一个应该被测试的层。
  • 嗨詹姆斯。这当然需要完成,但根据我的经验,它很难实现自动化,并且由于浏览器的差异,您需要为其中的一些实现自动化。所以这不是替代品,而是浏览器测试的补充。并且对于查找回归很有用。
  • @Maurice:我认为您应该通过将 ardave 的答案标记为您的问题的正确答案来奖励它,即使它是在您发布问题很久之后。从今天的角度来看,时差没有区别:-)

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


【解决方案1】:

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

【讨论】:

  • 我也很喜欢他的书。事实上,我现在旁边有一份副本。
【解决方案2】:

对它进行了一些实验,在某些情况下它可能非常有用。一般都竖起大拇指,如果我看到进一步的工作,我会在未来的项目中使用。

没有像WatIn 那样设置并处理一些我不想在这个框架中再次处理的事情。例如。通过对话框进行身份验证,这可能需要更改代码。

【讨论】:

    【解决方案3】:

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

    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"} });

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

    【讨论】:

    • 跟进 - 我强烈建议迁移到 MVC3 并使用 RazorGenerator。您可以同时运行 MVC2 和 MVC3,一次迁移单个网页,我发现这可以无缝地工作。尽管 Steve Sanderson 的框架在 MVC2 的限制下运行良好,但我们发现在我们的开发机器和 C.I. 上使用测试框架时,管理对硬编码文件路径的更改是非常困难的。服务器。 RazorGenerator + MVC3 不存在这个问题。
    • 感谢您的跟进!您能否简要解释一下 RazorGenerator 如何帮助您替换 MvcIntegrationTestFramework 进行集成测试?预编译 Razor 视图对此有何帮助?也许你已经写过博客了:-)
    【解决方案4】:

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

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

    对于任何“正常”的 MVC3 应用程序,它都可以正常工作。不幸的是,它与 Orchard 一起表现不佳,至少在其 Global.asax.cs 的未修改版本中表现不佳。所以我们仍然使用browser based testing road,但我们继续使用它在应用程序内执行 Orchard 命令,这已经足够快了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-23
      • 2010-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-13
      • 1970-01-01
      相关资源
      最近更新 更多