dunitxで名前空間を使用することは可能ですか?ネームスペース下のすべてのテストフィクスチャが1組のsetup/teardownルーチンで囲まれるようにしますか? (nunitのSetupFixture属性に似ています、http://www.nunit.org/index.php?p=setupFixture&r=2.5.5)。dunitxのネームスペース内のすべてのフィクスチャに対して共通のセットアップルーチンを作成できますか?
私は、次のユニット名/名前空間を使用してみました:一般的なセットアップとティアダウンメソッドを持つ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源が類似しています)。
名前空間を使用して初期化とクリーンアップを構成する方法の例がありますか?