2

我想用 Coded UI Tests 测试一个 Delphi 应用程序,但是我遇到了一些问题。我想访问 UI 中的某些元素,但无法访问所有元素。

屏幕上有一个包含一些行的列表(根据搜索参数),我想访问这些行以检查值的一致性。但是通过 Coded UI Test Builder 的交叉,我无法访问应用程序上的行。如何访问行?

我现在只找到了一个解决方案:为 Coded UI Tests 开发一个扩展,以便与我的 Delphi 应用程序正确交互,就像Microsoft 网站上的示例一样。它是 Excel 的扩展,可让您访问每个单元格。但这听起来很困难,而且我必须测试的应用程序也非常复杂。

4

1 回答 1

1

如果你的界面是普通的 VCL,你可以通过使用它们下面的HWND句柄来访问大多数组件。它会为TEdit TMemo TComboBox TCheckBox等一个人工作。但是某些图形组件将无法从 GDI 消息中访问,例如TLabelTGrid.

所以我猜你必须在你的应用程序中使用 Delphi 插件,才能访问 VCL 组件级别。使用(通过递归调用)的ComponentCount + Components[]属性TForm来访问要测试的组件。然后将其属性发布到要编写的 Coded UI Tests 扩展。

我在这里谈论一个“插件”,因为我认为我们可能不容易访问所有要监视/修改的类。在测试阶段,一些“插件”架构可以帮助应用程序像往常一样工作,或者在“编码 UI 测试模式”下工作。出于测试目的进行单独编译可能更好:您应该更好地测试最终编译的可执行文件。如果您只想要单元测试,您可以重新编译、存根和模拟您的应用程序以仅测试给定的表单。但是您需要对表单进行编码以便轻松进行单元测试(使用依赖注入等),这在默认的 Delphi 世界中远非易事(与其他 RAD 方法一样)。

启动一个开源项目(包含在 DUnit 中?)来开发这样一个平台可能会很有趣。或者使用现有的 Delphi UI 测试框架作为基础。我们工作的很多公司都在混合 .Net 和 Delphi 技术,并且会受益于这样的工具。

于 2012-06-11T17:05:15.000 回答