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, Интересно, почему ты этого не делаешь?

Другие вопросы по тегам