加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – DUnit无法创建表单.目前没有MDI表单处于活动状态

发布时间:2020-12-15 09:34:49 所属栏目:大数据 来源:网络整理
导读:嘿,我在Delphi XE3中的单元测试有问题我有一个项目,包括1个MDIForm和分配MDIChild表单然后问题是,当我在我的MDIChild表单上运行测试时,我收到此错误: TestAllDataSrouces: EInvalidOperationat $0064346FSetUp FAILED: Cannot create form. No MDI forms ar
嘿,我在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

要进行所需的测试,最好自己制作可以正确设置环境并执行测试的工具.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读