商信互联
该eXpressApp框架包括它自己的功能测试引擎- EASYTEST。使用它所需要做的只是测试脚本允许的一组命令。使用自定义脚本语言有很大的优势-您可以使用XAF术语编写测试。因此,您的测试将适用于WinForms和ASP.NET Web应用程序。本主题描述使用EasyTest的基础知识以及它所包含的组件。有关如何测试XAF应用程序的分步说明,请参阅“如何:测试操作”主题。
当您创建新的XAF解决方案时,FunctionalTests文件夹将添加到模块项目中。
默认情况下,此文件夹包含EasyTest配置文件和Sample.ets示例测试脚本文件。您可以使用样本测试脚本来快速了解脚本语法。EasyTest要求包含测试脚本的文件夹中存在Config.xml配置文件,以便能够执行测试脚本。该文件用作测试脚本所需的配置信息的中央存储。默认情况下创建的配置文件包含解决方案的应用程序项目的应用程序定义。您可以在任何文件夹中创建测试脚本。但是,由于FunctionalTests文件夹包含自动生成的配置文件,建议您在此处存储测试脚本。要了解有关配置文件的更多信息,请参阅EasyTest配置主题。
使用在应用程序项目的配置文件中定义的单独的EasyTest连接字符串创建新的解决方案。该连接字符串名为EasyTestConnectionString。因此,在测试期间,应用程序将使用此连接字符串指定的数据库。
可以通过两种方式创建测试脚本。
手动地
右键单击FunctionalTests文件夹,然后选择添加新项。在“添加新项”对话框中,选择“文本文件”,输入名称并将文件扩展名更改为ETS。之后,您可以通过Visual Studio文本编辑器输入所需的脚本。有关可用脚本命令的列表,请参阅《EasyTest脚本参考》主题。
使用EasyTest脚本记录器
EasyTest随脚本记录器一起提供,可以记录您在UI上执行的操作并将其保存到EasyTest脚本文件中。要了解如何使用脚本记录器,请参考“脚本记录器模块”主题。请注意,脚本记录器具有某些限制,该限制也在该主题中列出。
要查看测试脚本示例,请参阅XAF附带的XCRM演示。该演示应用程序包含大约两打示例测试脚本,您可以使用它们学习EasyTest。该XCRM演示位于%PUBLIC%\文件\ DevExpress的演示19.2 \组件\ eXpressApp框架\ XCRM文件夹在默认情况下。
EasyTest的测试功能已集成到Visual Studio中。因此,您可以在开发应用程序时从Visual Studio测试您的应用程序。EasyTest为上下文菜单提供了一组操作,当您在Visual Studio文本编辑器中编辑ETS脚本文件时,以及在单击ETS文件时在解决方案资源管理器中可用。
上下文菜单包含以下操作。
行动 | 描述 |
---|---|
跑步 | 执行整个测试。 |
运行下一站 | 根据命令执行测试脚本。要执行整个测试,必须执行此操作的次数与测试文件中存在测试命令的次数相同。 |
游标 | 编辑ETS文件时,仅在Visual Studio文本编辑器中处于活动状态。直到光标所在的位置执行测试,然后暂停测试执行。 |
停止跑步 | 停止正在运行的测试。 |
所有这些命令在EasyTest工具栏上也可用,默认情况下处于禁用状态。
您可以批量运行多个测试。为此,请在使用上下文菜单的“运行”命令之前,在“解决方案资源管理器”中选择所需的测试脚本文件。您还可以调用模块项目或FunctionalTests文件夹的上下文菜单。在这种情况下,如果使用“运行”命令,则将执行所有现有脚本。使用“运行下一步”操作执行多个测试时,所选测试将放入队列中,并像在单个测试中表示的那样执行。因此,如果您到达了测试1中的最后一条命令并使用了“运行下一步”命令,则将执行测试2中的第一个命令。
执行多个测试时,如果无法执行某个测试命令,则当前脚本文件的执行将中断。错误和相应的脚本行号将写入“输出窗口”。然后,执行下一个脚本文件。“输出”窗口包含一个简单的日志,描述了测试的过程和结果。
当测试失败时,除了错误消息外,还将截取屏幕截图,以捕获失败时应用程序UI的状态。当前,屏幕截图由Windows窗体应用程序的JPEG文件和ASP.NET Web应用程序的HTML页面表示。如果屏幕快照文件的扩展名(JPEG或HTML)与相应的编辑器之间存在关联,则可以在Visual Studio输出窗口中双击其名称来打开屏幕快照。若要了解如何设置关联,请参阅“如何:更改或添加默认编辑器MSDN”文章。
您也可以像常规Visual Studio解决方案一样设置断点。
当测试执行在断点处暂停时,您可以使用适当的上下文菜单操作恢复测试的执行,直到最后一个命令或逐步执行。
EasyTest脚本文件也可以由独立的测试执行程序工具执行。要了解有关它的更多信息,请参阅TestExecutor实用程序主题。
如有必要,您可以从应用程序中删除所有EasyTest组件。在这种情况下,请删除以下内容:
为了能够测试使用v2009 vol2之前的DXperience版本创建的现有应用程序,您需要首先更新其解决方案。以下步骤描述了在调试解决方案配置中支持EasyTest所需的修改。
在Windows Forms应用程序项目中,必须更新以下方法。
WinApplication.cs(WinApplication.vb)文件中的DatabaseVersionMismatch方法。
private void MySolutionWindowsFormsApplication_DatabaseVersionMismatch(
object sender, DevExpress.ExpressApp.DatabaseVersionMismatchEventArgs e) {
#if DEBUG
e.Updater.Update();
e.Handled = true;
#else
if (System.Diagnostics.Debugger.IsAttached) {
//...
}
else {
//...
}
#endif
}
Private Sub MySolutionWindowsFormsApplication_DatabaseVersionMismatch( _
ByVal sender As Object, ByVal e As _
DevExpress.ExpressApp.DatabaseVersionMismatchEventArgs) _
Handles MyBase.DatabaseVersionMismatch
#If DEBUG Then
e.Updater.Update()
e.Handled = True
#Else
If System.Diagnostics.Debugger.IsAttached Then
'...
Else
'...
End If
#End If
End Sub
Program.cs(Program.vb)文件中的Main方法。
EasyTest默认情况下侦听4100端口。要使用另一个端口,请在应用程序配置文件(App.config)中指定EasyTestCommunicationPort密钥值。定制端口必须与EasyTest Config.xml配置文件中指定的端口匹配。
<appSettings>
<!-- ... -->
<add key="EasyTestCommunicationPort" value="44100"/>
<!-- ... -->
</appSettings>
在ASP.NET Web应用程序项目中,必须更新以下方法。
WebApplication.cs(WebApplication.vb)文件中的DatabaseVersionMismatch方法。
private void MySolutionAspNetApplication_DatabaseVersionMismatch(
object sender, DevExpress.ExpressApp.DatabaseVersionMismatchEventArgs e) {
#if DEBUG
e.Updater.Update();
e.Handled = true;
#else
if (System.Diagnostics.Debugger.IsAttached) {
//...
}
else {
//...
}
#endif
}
Private Sub MySolutionAspNetApplication_DatabaseVersionMismatch( _
ByVal sender As Object, ByVal e As _
DevExpress.ExpressApp.DatabaseVersionMismatchEventArgs) _
Handles MyBase.DatabaseVersionMismatch
#If DEBUG Then
e.Updater.Update()
e.Handled = True
#Else
If System.Diagnostics.Debugger.IsAttached Then
'...
Else
'...
End If
#End If
End Sub
Global.asax.cs(Global.asax.vb)文件中的Application_Start方法。
protected void Application_Start(Object sender, EventArgs e) {
WebApplication.OldStyleLayout = false;
#if DEBUG
DevExpress.ExpressApp.Web.TestScripts.TestScriptsManager.EasyTestEnabled = true;
#endif
}
Protected Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
WebApplication.OldStyleLayout = False
#If DEBUG Then
DevExpress.ExpressApp.Web.TestScripts.TestScriptsManager.EasyTestEnabled = True
#End If
End Sub
请注意,以这种方式更新解决方案后,EasyTest将使用在应用程序项目的配置文件中指定的数据库连接字符串。因此,您可能需要在运行任何实际测试之前备份应用程序使用的数据库。