Delphi DUnitX测试表单的创建两次



我用DUnitX创建了一个测试用例,它自动生成了一些代码,我对如何构建测试用例感到困惑。

(自动生成的(代码如下所示:

procedure TestTBtnMgmtForm.SetUp;
begin
  FBtnMgmtForm := TBtnMgmtForm.Create;
end;
procedure TestTBtnMgmtForm.TearDown;
begin
  FBtnMgmtForm.Free;
  FBtnMgmtForm := nil;
end;
procedure TestTBtnMgmtForm.TestFormCreate;
var
  Sender: TObject;
begin
  // TODO: Setup method call parameters
  FBtnMgmtForm.FormCreate(Sender);
  // TODO: Validate method results
end;

但是,TBtnMgmtForm.Create将自动调用.FormCreate。以某种方式将这两者分开是好的做法吗?.Create.FormCreate之间有什么区别或应该有什么区别?

窗体的构造函数将调用 OnCreate 事件处理程序(如果已分配(。在您的情况下,它被分配给名为 FormCreate 的函数。

作为一般规则,事件处理程序由框架调用,不应直接调用。我看不出你的代码足够确定,但我的直觉告诉我,你根本不应该打电话给FormCreate。框架的工作就是做到这一点。

OnCreate的要点是,它允许您将代码注入窗体类的构造函数中,而不必重写构造函数。可以使用窗体设计器添加事件处理程序并填写代码。我个人认为OnCreate有些容易。一旦你知道如何重写构造函数,这样做似乎更明确。

但是,您似乎有一个带有无参数构造函数的窗体。这很奇怪。通常,您会覆盖在 TComponent 中声明的虚拟构造函数。我想知道你为什么不这样做。

相关内容

  • 没有找到相关文章

最新更新