使用Asp。Net进程中主机服务器
我们的许多客户都要求一种不需要浏览器就能执行测试的方法。他们想要一个轻量级、快速和敏捷的执行,适合他们的持续集成构建,并且可以轻松地与CruiseControl一起工作。Net’或‘Visual Studio Team Foundation Server’。我们通过两个方面的支持来启用这些场景:
1.我们使用Internet Explorer和Firefox启用了非交互式执行。持续集成服务器通常使用非交互式登录到服务器机器的用户帐户来执行构建并运行冒烟或BVT(构建验证测试)测试。我们修复了这些场景,并为开发人员提供了一种方法来检测它们何时在非交互模式下运行,这样他们就可以自动禁用需要交互式UI的场景,比如移动鼠标以单击项目或处理自定义对话框的测试。测试可以检查设置。IsUserInteractiveMode属性来确定它们是否以非交互模式运行,并执行适当的操作。如果您尝试执行非交互模式中不允许的操作,则会出现“UnsupportedNonInteractiveOperationException”是为了帮助你了解这个情况。
2.Telerik测试框架可以承载Asp。Net运行时进程。这允许您执行和处理Asp。无需web服务器、浏览器或任何外部进程即可访问web页面。所有请求都在test .exe或.dll进程内部执行。我们没有重新发明轮子,而是选择集成Asp。Net主机实现的“等离子”项目在这里。我们扩展了post - backs支持,以允许Asp. js的所有常见操作。Net网页,包括点击Asp。Net日历链接、树视图和菜单控件。所有操作都使用相同的方法实现行动接口用于Internet Explorer和Firefox,因此无论选择在哪个浏览器/主机下运行,您的测试都是一致的。你可以在浏览器之间来回切换,包括Asp。Net主机只需设置“设置”。DefaultBrowser”属性。这样就可以根据需要灵活地选择运行测试的环境。(即运行在集成服务器上,使用AspNetHost,运行在您的桌面,使用IE或Firefox。所有的一切都伴随着一面旗帜的飘扬。)
Asp。Net进程中服务器是一个没有浏览器的主机,需要大量客户端javascript执行的测试可能不适合这个浏览器,因为没有javascript引擎在运行。重Ajax场景应该使用IE或Firefox进行测试。Asp。Net in - proc Server在BVT类型的场景或专注于测试UI元素操作背后的业务逻辑的单元测试中是理想的。对于端到端场景自动化测试来说,这并不理想。
就像非交互模式一样,在Asp下运行。Net进程内服务器将禁用在该模式下不适用的某些功能。例如,如果您试图访问“浏览器”。窗口'对象或执行'操作。,框架会抛出一个“UnsupportedBrowserOperationException”在此模式下运行时,这些场景不适用。
如果你使用的是NUnit 2.4或更高版本,你可能会遇到类似于这里描述的问题的AppDomainUnloadException。为了解决这个问题,请在nunit.exe.config文件中将legacyUnhandledExceptionPolicy设置为“0”。
记住了所有这些,让我们看一个示例,该示例说明了如何使测试能够针对Asp运行。Net inproc主机。这是一个简单的Asp。asp.net页面,使用了多个Asp。Net控件:
<%@页面语言=" c# " %> < head runat="server">