名前空間の下のすべてのテスト フィクスチャが 1 組のセットアップ/ティアダウン ルーチンによって囲まれるような方法で、dunitx で名前空間を使用することは可能ですか? (nunit の SetupFixture 属性と同様、http://www.nunit.org/index.php?p=setupFixture&r=2.5.5 )。
次のユニット名/名前空間を使用しようとしました:
TMyFixtureInitializer クラスの Tests.MyFixture.pas で、共通のセットアップ メソッドとティアダウン メソッドを使用します。
実際のテスト クラスの Tests.MyFixture.MyTestUnit1.pas および Tests.MyFixture.MyTestUnit2.pas。
次の問題が発生しました。
TMyFixtureInitializer.SetupFixture と TeardownFixture は、クラス自体にテスト ルーチンが含まれていない場合は実行されません。
TMyFixtureInitializer にダミー テストを追加した後、SetupFixture ルーチンと TeardownFixture ルーチンが呼び出されますが、Tests.MyFixture.MyTestUnit1と Tests.MyFixture.MyTestUnit2 でのテストの後です。
コンストラクタに SetupFixture 属性を設定し、TMyFixtureInitializer のデストラクタに TeardownFixture 属性を設定すると、名前空間を完全に無視して、すべてのテストの前後に実行されます。
Tests.MyFixture.pas:
unit Tests.MyFixture;
interface
uses
DUnitX.TestFramework;
type
[TestFixture]
TMyFixtureInitializer = class(TObject)
public
[SetupFixture]
procedure SetupMyFixture;
[TeardownFixture]
procedure TeardownMyFixture;
end;
implementation
{ TMyFixtureInitializer }
procedure TMyFixtureInitializer.SetupMyFixture;
begin
Self.Log('initialize a lot of stuff ...');
end;
procedure TMyFixtureInitializer.TeardownMyFixture;
begin
Self.Log('cleanup a lot of stuff ...');
end;
initialization
TDUnitX.RegisterTestFixture(TMyFixtureInitializer);
end.
Tests.MyFixture.MyTestUnit1.pas:
unit Tests.MyFixture.MyTestUnit1;
interface
uses
DUnitX.TestFramework;
type
[TestFixture]
TestClass1 = class(TObject)
public
[Test]
procedure Test;
end;
implementation
{ TestClass1 }
procedure TestClass1.Test;
begin
end;
initialization
TDUnitX.RegisterTestFixture(TestClass1);
end.
(Tests.MyFixture.MyTestUnit2.pas のソースは類似しています)。
名前空間を使用して初期化とクリーンアップを整理する方法の例はありますか?