4

Delphi 是否有任何等效的 DocTest。我使用 DUnit,但我喜欢 Python DocTest 的想法。我在这里看到了一些答案,但我认为,对于简单的功能,像 DocTest 这样的可能没问题。我的目标是在编写函数时在注释标题中定义我的测试。像 :

function Plus(i1, i2 : integer) : integer;
//>>> Check( Plus(1, 3) = 4)
begin
  result := i1 + i2;
end;
4

1 回答 1

2

这个想法是您可以使用“控制台”将一些结果输出到测试代码,然后将输出文本内容与预期值进行比较。

例如,看看伟大的 DWSScript 开源项目提供的回归测试。您会发现一些 .pas 文件和一些相关的 .txt 文件。

例如 abs.pas:

var vf = 1.5;
var vi = 2;

var i : Integer := Abs(-vi);
PrintLn(i);
PrintLn(Abs(vi));

var f : Float := Abs(-vf);
PrintLn(f);
PrintLn(Abs(vf));

以及对应的abs.txt内容:

2
2
1.5
1.5

AFAIK 目前还没有现有的解决方案集成到 Delphi 世界中。

在注释中编写测试将缺少 IDE 自动完成功能,并且在某种程度上破坏了对象 pascal 设计。使用 DWS 会很容易,但需要调用命令行 Delphi 编译器。老实说,我看不出拥有自己的一组专门用于测试的单元有什么问题。带有固定和随机值的循环的一小段代码for..to将比一组固定参数具有更好的测试覆盖率。

于 2012-04-06T09:04:40.557 回答