升级Delphi 11后DUnitX GUI测试编译失败:缺失DUnitX.Loggers.GUI.VCL.dfm
解决Delphi 11下DUnitX GUI测试程序编译故障
1. 确认DUnitX安装完整性
- 检查Delphi的库路径,确保包含DUnitX完整源码目录(必须包含
DUnitX.Loggers.GUI.VCL.pas和对应DUnitX.Loggers.GUI.VCL.dfm文件的路径) - 若通过GetIt安装,先卸载现有版本,重新搜索安装适配Delphi 11的最新版DUnitX
- 手动安装的话,把DUnitX源码根目录(含所有子文件夹)添加到Delphi的库路径和搜索路径中
2. 修复单元引用与窗体关联
- 不要注释
DUnitX.Loggers.GUI.VCL单元引用,确保该单元在项目中正确引入 - 打开
DUnitX.Loggers.GUI.VCL.pas,检查文件开头是否有{$R *.dfm}指令,缺失则手动添加 - 若dfm文件丢失,从DUnitX源码包(本地备份或重新下载的完整源码)中复制对应dfm文件到pas文件同目录
3. 项目配置检查
- 打开项目选项,进入Delphi Compiler -> Search Path,确认DUnitX的GUI相关目录已添加
- 检查项目目标平台,优先选择Win32/Win64(DUnitX对这两个平台支持更稳定)
- 清理编译缓存:删除项目目录下的
*.dcu、*.exe、*.cfg文件后重新编译
4. 替代方案:手动实现简易GUI测试运行
如果上述方法无效,可绕过默认GUI runner,用以下代码实现基础测试运行:
uses DUnitX, DUnitX.Loggers.Console, DUnitX.Loggers.Xml, Vcl.Dialogs; var runner: ITestRunner; results: ITestResults; consoleLogger: ITestLogger; begin Application.Initialize; runner := TDUnitX.CreateRunner; consoleLogger := TDUnitXConsoleLogger.Create; runner.AddLogger(consoleLogger); runner.AddLogger(TDUnitXXmlLogger.Create('TestResults.xml')); runner.RegisterTests; results := runner.Execute; ShowMessage(Format('测试完成:%d 通过,%d 失败,%d 跳过', [results.PassedCount, results.FailedCount, results.SkippedCount])); Application.Terminate; end.
内容的提问来源于stack exchange,提问作者Franz
相关产品推荐
相关产品推荐

