gpt4 book ai didi

delphi - DUnit 无法创建表单。当前没有处于事件状态的 MDI 表单

转载 作者:行者123 更新时间:2023-12-03 15:22:08 28 4
gpt4 key购买 nike

嘿,我在 Delphi XE3 中的单元测试有问题,我有一个由 1 个 MDIForm 和分配的 MDIChild 表单组成的项目,那么问题是,当我在 MDIChild 表单上运行测试时,我收到此错误:

TestAllDataSrouces: EInvalidOperation
at $0064346F
SetUp FAILED: Cannot create form. No MDI forms are currently active

我的设置方法如下所示:

procedure TestTCustomerCard.SetUp;
begin
FCustomerCard := TCustomerCard.Create(Application);
end;

我该如何解决这个错误?到目前为止我尝试过:

FCustomerCard :=  TCustomerCard.Create(Application.MainForm);

FCustomerCard := TCustomerCard.Create(nil);

还有

procedure TestTCustomerCard.SetUp;
var
a : TForm;
begin
a := TForm.Create(nil);
a.FormStyle := fsMDIForm;
FCustomerCard := TCustomerCard.Create(a);
end;

我的测试是:

procedure TestTCustomerCard.TestAllDataSrouces;
var
I: Integer;
begin
for I := 0 to FCustomerCard.ComponentCount-1 do
begin
if (FCustomerCard.Components[i] is TcxLookupComboBox) then
begin
Check(TcxLookupComboBox(FCustomerCard.Components[i]).Properties.ListSource = nil,'Error no ListSource, Lookup: '+TcxLookupComboBox(FCustomerCard.Components[i]).Name+' Parent: '+TcxLookupComboBox(FCustomerCard.Components[i]).Parent.Name);
end;
if (FCustomerCard.Components[i] is TcxDBTextEdit) then
begin
Check(TcxDBTextEdit(FCustomerCard.Components[i]).DataBinding.DataSource = nil,'Error No DataSet, Text Edit: '+TcxDBTextEdit(FCustomerCard.Components[i]).Name+' Parent: '+TcxDBTextEdit(FCustomerCard.Components[i]).Parent.Name);
end;
if (FCustomerCard.Components[i] is TcxGridDBTableView) then
begin
Check(TcxGridDBTableView(FCustomerCard.Components[i]).DataController.DataSource = nil,'Error no Data Source, DB Grid View: '+TcxGridDBTableView(FCustomerCard.Components[i]).Name);
end;
end;
end;

演示项目:Here

最佳答案

您所做的更像是功能测试或集成测试。您正在检查您的 UI 设置是否正确。这种测试不同于单元测试。

单元测试应该检查是否给模块提供某些输入,然后它们会产生某些输出。单元测试是本地化的。它们旨在独立于其他单元测试一个单元的行为。 UI 特别依赖于其他单元。它们从输入设备获取数据并对数据库进行操作,总体上具有相当复杂的依赖关系。这使得它们成为单元测试的坏目标。

看看这个问题 - Unit tests vs Functional tests

要进行您想要的测试,最好制作自己的工具来正确设置环境并执行测试。

关于delphi - DUnit 无法创建表单。当前没有处于事件状态的 MDI 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22440591/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com