unit-testing - 动态创建测试列表

标签 unit-testing delphi dunit dunitx

我在 Delphi 中使用 DUnitX 但我陷入困境。 如何动态创建测试列表?

例如 我有 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

任何建议

编辑1

在 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 中的等效项是什么?

最佳答案

根据this描述 DunitX 是属性驱动的。它并不是 DUnit 的直接替代品(或扩展)。所以我猜它不支持动态测试用例创建。

附:我是开源组件测试的作者framework它基于 DUnit 并大量使用动态测试生成。

关于unit-testing - 动态创建测试列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33540369/

相关文章:

java - 如何在java中模拟单个语句

forms - 如何从 DUnit 测试中获取事件的 TGUITestRunner?

java - Google Task API 的单元测试

java - 是否可以编写测试事务代码的事务单元测试?

c - 映射两个连续的页面

delphi - 我的应用程序是如何启动的?

delphi - 在 Delphi 的 Unicode 版本中 Access 记录的真实缓冲区 - ADO

string - 在 Delphi 中,我如何创建一个带有空分隔符的字符串

StopExpectingException 之后的 Delphi 7 Dunit 检查未按我的预期工作

delphi - 如何使用 DUnit 测试私有(private)方法?