Я создаю модульные тесты с помощью DUnit. У меня есть класс, который занимает довольно много времени для инициализации.
Получается класс TMyTestSetup из TTestSetup и переопределяет его метод установки. Этот метод SetUp вызывается только один раз для всех тестов в моем TTestCase. Я поставил процесс инициализации в подпрограмме TMyTestSetup.SetUp для повышения производительности.
Моя проблема в том, как я могу получить доступ к объекту, который я хочу инициализировать, который является полем моего TMyTest в классе TestSetup? Это единственный способ сделать это, объявив его глобально?
непроверенный короткий пример:
TMyTestSetup = class(TTestSetup)
protected
procedure SetUp; override;
end;
TMyTest = class(TTestcase)
public
fTakes4Ever2Init : TInits4Ever2Init;
published
procedure Test1;
end;
implementation
procedure TMyTestSetup.Setup;
begin
// How can I access fTakes4Ever2Init from here?
fTakes4Ever2Init.create // This is the call that takes long
end;
procedure TMyTest.Test1;
begin
fTakes4Ever2Init.DoSomething;
end;
initialization
RegisterTest(TMyTestSetup.Create(TMyTest.Suite));