我有一个 MVC 网站,用户必须采取许多不同的步骤才能通过它。有验证检查和定时部分(用于法律要求)。每次我需要测试对页面的小改动时都必须进行集成测试,这真是令人头疼。理想情况下,我想知道是否有一种方法(可能是插件?)可以让我右键单击视图,以某种方式指定一个假模型对象并直接打开它?
我最终要测试的是任何新的客户端脚本(结合了razor/javascript/jQuery)在各种浏览器上的外观和工作方式。这不是关于测试我的控制器的功能。
我有一个 MVC 网站,用户必须采取许多不同的步骤才能通过它。有验证检查和定时部分(用于法律要求)。每次我需要测试对页面的小改动时都必须进行集成测试,这真是令人头疼。理想情况下,我想知道是否有一种方法(可能是插件?)可以让我右键单击视图,以某种方式指定一个假模型对象并直接打开它?
我最终要测试的是任何新的客户端脚本(结合了razor/javascript/jQuery)在各种浏览器上的外观和工作方式。这不是关于测试我的控制器的功能。
设计时数据
设计时数据在 WPF 中是常用的,这里有一篇文章描述了一种在 MVC 中显示设计时数据的技术:
http://blog.dezfowler.com/2010/11/adding-design-mode-to-your-mvc-app.html
这应该为您提供一种“以某种方式指定假模型对象并直接打开它”的方法。
这可能就是你所追求的,或者:
卷曲
可以与上述实时或设计时数据一起使用。
我使用从批处理文件执行的cURL并将内容输出到多个文件。
例如,此批处理可能会模拟登录:
登录.bat:
echo Index without logon
curl http://localhost/index.html
echo Logon
curl http://localhost/login.html --data "username=a&password=p" ---dump-header auth.txt
echo Index after logon
curl http://localhost/index.html --cookie auth.txt
RunAll.bat:
call Logon.bat > logon_result.txt
第一次运行它时,我也在浏览器中手动查看页面,然后我知道我可以将这些批处理结果文件(例如logon_result.txt
)提交为预期的输出。
随后我运行批处理文件时,任何更改都会在修订控制中突出显示。在这一点上,我查看了差异并确定它们,并提交为新的预期输出。或者我修复了一个错误。
我通常将它用于 WebAPI 集成测试,但它应该适用于任何 http 服务页面。要记住的一个特定场景是,例如,对于共享布局的全面更改,您可能不想手动检查它们。因此,请确保在布局更改之前检查并提交所有内容,这样小错误就不会隐藏在大量更改中。
我用这种技术发现了一些不好的错误。曾经把 aSystem.Web.Mvc.AuthorizeAttribute
放在 aApiController
而不是 a 上System.Web.Http.AuthorizeAttribute
?不会阻止未经授权的用户,但代码看起来不错。
您可能还希望设置一个新的干净数据库或恢复一个快照作为RunAll.bat
文件的第一个任务,以便页面上显示的任何数据每次运行都相同,并且不会显示为更改。
测试 Web 应用程序是一个相当大的话题,但让我们保持简单:
要正确测试您的应用程序,您必须以某种方式设计应用程序
如果您有一个 MVC 网站,您通常应该将所有业务逻辑与任何 UI 分开。这实际上应该使您能够使用标准的单元测试项目来测试 80% 的代码。当然,您必须编写大量代码才能正确测试它...
如果您的视图中有大量的业务逻辑,这将导致非常难以测试代码。唯一的方法(我知道)是自动化 UI 测试。为此,有一些有用的框架可用,Visual Studio 也提供了一些自动化测试的工具。
一般来说,它是这样工作的,您定义通常作为用户在 Web 浏览器中执行的操作。用户可能会执行的所有操作都可以通过编写脚本来测试。要做到这一点,很大程度上取决于你的用户界面实际上有多复杂和/或动态。你拥有的东西越多,编写测试脚本就越难......
以下是一些关于自动化测试的精彩文章:http: //visualstudiomagazine.com/Articles/2012/12/01/Automated-UI-Testing.aspx
http://blog.typemock.com/2012/05/22/automated-testing-of-asp-net-mvc-applications
这里还有一个关于如何在 VS2012 中运行自动化 UI 测试的快速视频:http: //channel9.msdn.com/Events/Visual-Studio/Visual-Studio-2012-Virtual-Launch/Automated-UI-testing-with -Visual-Studio-2012