Создать список тестов динамически
Я использую DUnitX в Delphi, но я застрял. Как я могу динамически создавать список тестов?
например, у меня есть список 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?
2 ответа
Согласно этому описанию DunitX управляется атрибутами. Он не предназначен для замены (или расширения) DUnit. Так что я думаю, что он не поддерживает динамическое создание тестовых случаев.
PS Я являюсь автором инфраструктуры тестирования компонентов с открытым исходным кодом, которая основана на DUnit и интенсивно использует динамическое создание тестов.
В некотором смысле я преуспел, объявив контрольные примеры в файле JSON и подключившись к системе плагинов DUnitX: