Вы не можете инициализировать поля TTestCase для всего набора тестов, и вот объяснение, почему:
unit Tests3;
interface
uses
TestFramework, TestExtensions, Windows, Forms, Dialogs, Controls, Classes,
SysUtils, Variants, Graphics, Messages;
type
TMyTestCase = class(TTestCase)
private
FValue: Integer;
published
procedure Test1;
procedure Test2;
end;
implementation
{ TMyTestCase }
procedure TMyTestCase.Test1;
begin
FValue:= 99;
ShowMessage(Format('%p, %d', [Pointer(Self), FValue]));
end;
procedure TMyTestCase.Test2;
begin
ShowMessage(Format('%p, %d', [Pointer(Self), FValue]));
end;
initialization
RegisterTest(TMyTestCase.Suite);
end.
Если вы запустите вышеупомянутый модульный тест, вы увидите, что адреса «Self», показанные в методах Test1 и Test2, отличаются. Это означает, что экземпляры объекта TMyTestCase отличаются для вызовов Test1 и Test2.
Следовательно, любые поля, которые вы можете объявить в классе TMyTestCase, являются нестабильными между вызовами тестового метода.
Чтобы выполнить «глобальную» инициализацию, вы должны объявить свой объект глобально, а не как поле TMyTestCase.