是否可以在 dunitx 中使用命名空间,使命名空间下的所有测试装置都包含在一对设置/拆卸例程中?(类似于 nunit 中的 SetupFixture 属性,http: //www.nunit.org/index.php?p=setupFixture&r=2.5.5 )。
我尝试使用以下单位名称/命名空间:
TMyFixtureInitializer 类的 Tests.MyFixture.pas 以及常用的 setup 和 teardown 方法
Tests.MyFixture.MyTestUnit1.pas 和 Tests.MyFixture.MyTestUnit2.pas 用于实际的测试类。
我遇到了以下问题:
当类本身不包含任何测试例程时,不会执行 TMyFixtureInitializer.SetupFixture 和 TeardownFixture。
在 TMyFixtureInitializer 中添加虚拟测试后,将调用 SetupFixture 和 TeardownFixture 例程,但在Tests.MyFixture.MyTestUnit1 和 Tests.MyFixture.MyTestUnit2 中的测试之后。
当我在构造函数上设置 SetupFixture 属性,在 TMyFixtureInitializer 的析构函数上设置 TeardownFixture 属性时,它们在所有测试之前和之后执行,完全忽略了命名空间。
测试.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 的来源是类似的)。
有没有人有一个如何使用命名空间来组织初始化和清理的例子?