我用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
之间的区别?
答案 0 :(得分:0)
如果已分配,则表单的构造函数将调用OnCreate
事件处理程序。在您的情况下,它被分配给名为FormCreate
的函数。
作为一般规则,事件处理程序由框架调用,不应直接调用。我看不到你的代码足够确定,但我的直觉告诉我你根本不应该打电话给FormCreate
。这样做是框架的工作。
OnCreate
的要点是,它允许您将代码注入到表单类的构造函数中,而不必覆盖构造函数。您可以使用表单设计器添加事件处理程序并填写代码。我个人认为OnCreate
有点容易。一旦你知道如何覆盖构造函数,那么这样做似乎更明确。
但是,您似乎有一个带有无参数构造函数的表单。这很奇怪。通常,您将覆盖TComponent
中声明的虚拟构造函数。我想知道你为什么不这样做。