Delphi DUnitX дважды тестирует создание формы
Я создал TestCase с 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
?
1 ответ
Конструктор формы вызовет OnCreate
обработчик события, если он назначен. В вашем случае он назначен функции с именем FormCreate
,
Как правило, обработчики событий вызываются платформой и не должны вызываться напрямую. Я не вижу достаточно вашего кода, чтобы быть уверенным, но мои инстинкты говорят мне, что вы не должны звонить FormCreate
совсем. Это работа каркаса, чтобы сделать это.
Точка OnCreate
заключается в том, что он позволяет вводить код в конструктор класса формы без необходимости переопределять конструктор. Вы можете использовать дизайнер форм, чтобы добавить обработчик событий и заполнить код. Лично я считаю OnCreate
как несколько поверхностный. Как только вы знаете, как переопределить конструкторы, кажется, что это более очевидно.
Однако у вас, похоже, есть форма с конструктором без параметров. Это странно. Обычно вы переопределяете виртуальный конструктор, объявленный в TComponent
, Интересно, почему ты этого не делаешь?