如果你的界面是普通的 VCL,你可以通过使用它们下面的HWND句柄来访问大多数组件。它会为TEdit TMemo TComboBox TCheckBox等一个人工作。但是某些图形组件将无法从 GDI 消息中访问,例如TLabel或TGrid.
所以我猜你必须在你的应用程序中使用 Delphi 插件,才能访问 VCL 组件级别。使用(通过递归调用)的ComponentCount + Components[]属性TForm来访问要测试的组件。然后将其属性发布到要编写的 Coded UI Tests 扩展。
我在这里谈论一个“插件”,因为我认为我们可能不容易访问所有要监视/修改的类。在测试阶段,一些“插件”架构可以帮助应用程序像往常一样工作,或者在“编码 UI 测试模式”下工作。出于测试目的进行单独编译可能更好:您应该更好地测试最终编译的可执行文件。如果您只想要单元测试,您可以重新编译、存根和模拟您的应用程序以仅测试给定的表单。但是您需要对表单进行编码以便轻松进行单元测试(使用依赖注入等),这在默认的 Delphi 世界中远非易事(与其他 RAD 方法一样)。
启动一个开源项目(包含在 DUnit 中?)来开发这样一个平台可能会很有趣。或者使用现有的 Delphi UI 测试框架作为基础。我们工作的很多公司都在混合 .Net 和 Delphi 技术,并且会受益于这样的工具。