Создать список тестов динамически

Я использую 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:

https://github.com/VSoftTechnologies/DUnitX/issues/211

Другие вопросы по тегам