我在Delphi中使用DUnitX但是我卡住了。 如何动态创建测试列表?
e.g。 我有sql列表,需要像
一样测试它们for i:= 0 to List.Count do
begin
AddTest(List[i].SQL, List[i].Info, List[i].MaxTime);
end;
对于一种方法,这很简单
[Test]
procedure TestSingleSQL;
实施
procedure TestSingleSQL;
Var tick: Cardinal;
begin
tic:= GetTickCount;
Connection.Execute(SQL);
Assert.IsTrue(Abs(GetTickCount-Tick)<MaxTime);
end
但如果我需要测试列表,那么属性就不合适了。 RepeatTest 属性也不合适, 因为如果一次测试失败了 然后整个测试停止,但我需要运行所有的SQL
任何建议
EDIT1
在DUnit(没有X)这可能是这样的
function CreateDBTests: ITestSuite;
Var i: Integer;
baza: String;
TS_Connected, TS_SumyZlecFakt, TS_WPLATY, TS_KONTRAHENT: ITestSuite;
begin
Result:= TTestSuite.Create('Lista baz');
TS_Connected:= TTestSuite.Create('Połączenia');
TS_SumyZlecFakt:= TTestSuite.Create('SyumyZlecFakt');
TS_WPLATY:= TTestSuite.Create('Wpłaty');
TS_KONTRAHENT:= TTestSuite.Create('Kontrahent');
for i:= 0 to ListaBaz.Count-1 do
begin
baza:= ListaBaz[i];
TS_Connected.AddTest(TTestConnected.CreateDBListTest(baza));
TS_SumyZlecFakt.AddTest(TestSumyZlecFakt.CreateDBListTest(baza));
TS_WPLATY.AddTest(TestWplaty.CreateDBListTest(baza));
TS_KONTRAHENT.AddTest(TestKontrahent.CreateDBListTest(baza));
end;
Result.AddSuite(TS_Connected);
Result.AddSuite(TS_SumyZlecFakt);
Result.AddSuite(TS_WPLATY);
Result.AddSuite(TS_KONTRAHENT);
end;
DUnitX中的等价物是什么?
答案 0 :(得分:1)
根据this描述,DunitX是属性驱动的。它并不意味着是DUnit的直接替换(或扩展)。所以我猜它不支持动态测试用例创建。
P.S。我是一个基于DUnit的开源组件测试framework的作者,并大量使用动态测试生成。
答案 1 :(得分:1)
通过在JSON文件中声明测试用例并连接到DUnitX插件系统,我以某种方式成功完成了
https://github.com/VSoftTechnologies/DUnitX/issues/211#issuecomment-411082097