有没有一种方法可以编写单元测试,以便可以使用 Delphi 和 Free Pascal 编译和运行它们?
Delphi 和 Free Pascal 有不同的单元测试框架,这会导致针对这两种编译器的开发人员(例如库和框架开发人员)进行重复工作。
所以也许有一种方法,使用 DUnit 或 FPCUnit 框架并调整测试用例源代码(或框架本身),以便它也可以与其他编译器一起使用。
所以本质上问题是:
- 哪个框架(DUnit 或 FPCUnit)可以使用两种编译器(Delphi 和 Free Pascal)进行编译,并且修改尽可能少?
或
- 是否有第三个框架(感谢 Arnaud 提到 TSynTest)可以与 Delphi 和 FPC 配合使用?
最佳答案
查看此very nice blog article - 关于 FPCUnit 测试的新鲜内容。
简而言之,据我所知,如果你compare to DUnit :
- 大多数 Check*() 方法已重命名为 Assert*();
- SetUp/TearDown 方法在两个框架中均按每个函数调用;
- 其他一些人的想法可能会有所不同。
因此,我认为通过在 FPCUnit 实现上创建一个小型包装类,让 FPCUnit“模仿”DUnit 可能很容易,从而具有与 DUnit 完全相同的方法。因此,您可以在两个目标之间共享代码,甚至可以重用现有的 DUnit 测试。恕我直言,这样的包装类比使用此处建议的 {$ifdef FPC}
方便得多。条件编译往往会使代码难以调试、冗长、冗余,因此应仅在必要时使用。
另一个潜在的解决方案可能是使用其他测试框架。我们的小TSynTest classes更轻,但我目前正在将框架转换为 FPC。因此两个编译器可以使用完全相同的代码。它具有一些我在 DUnit/FPCUnit 中会错过的功能(例如带有精分割析的可选日志记录以及失败时的完整堆栈跟踪)。它没有 GUI 也没有向导,但老实说,作为我的程序员,我更喜欢纯文本,我可以轻松地将其包含在我的技术发布文档中,以证明没有发生回归。
关于delphi - Free Pascal 和 Delphi 的单源单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12204224/