Как получить доступ к полям TTestCase в классе TTestSetup

Я создаю модульные тесты с помощью 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));
12
задан Michael Küller 6 February 2011 в 10:17
поделиться