Я создаю модульные тесты с помощью 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));