0

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

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

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

4

1 回答 1

0

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

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

关键OnCreate是它允许您将代码注入表单类的构造函数,而无需重写构造函数。您可以使用表单设计器添加事件处理程序并填写代码。我个人认为OnCreate有些轻率。一旦您知道如何覆盖构造函数,这样做似乎更明确。

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

于 2017-02-03T21:11:04.687 回答