Delphi 在现有库项目组中组织单元测试
在我们的Delphi2007环境中,我们有一个SGLibrary groupproj,其中包含大约30个BPL。我们刚刚开始为这些库创建单元测试,不确定组织单元测试项目最方便的方式是什么 我们倾向于为每个bpl创建一个测试可执行文件,因为这将使编译变得简单而快速。可以将test exe设置为活动项目,并通过设置依赖项强制编译bpl。运行测试也很容易,即通过将测试可执行文件设置为bpl的主机应用程序 但缺点是library groupproject将扩展为另外30个项目,使其成为一个非常大的组(为什么我们不能在Delpi中创建子组??) 相反的安排是创建一个包含所有单元测试的测试可执行文件,但这将创建一个包含100多个单元的可执行文件,以及在运行单个测试之前必须编译的大量依赖项 所以我的问题是。。。有人对如何将其组织成一个可管理且快速运行的设置有任何建议、最佳实践或其他想法吗Delphi 在现有库项目组中组织单元测试,delphi,unit-testing,delphi-2007,Delphi,Unit Testing,Delphi 2007,在我们的Delphi2007环境中,我们有一个SGLibrary groupproj,其中包含大约30个BPL。我们刚刚开始为这些库创建单元测试,不确定组织单元测试项目最方便的方式是什么 我们倾向于为每个bpl创建一个测试可执行文件,因为这将使编译变得简单而快速。可以将test exe设置为活动项目,并通过设置依赖项强制编译bpl。运行测试也很容易,即通过将测试可执行文件设置为bpl的主机应用程序 但缺点是library groupproject将扩展为另外30个项目,使其成为一个非常大的组(为
额外考虑:我们希望能够同时运行所有测试,当然这会更容易,因为我们将所有测试放在一个可执行文件中。我可能会同时执行这两个测试,因此您最终会得到以下结果:
library MyTests;
uses
TestFramework{, add your test units};
function Test: ITest;
begin
result := RegisteredTests;
end;
exports
Test;
end;
然后,您只需像往常一样将测试用例添加到dll中。测试将自动注册到每个单元的初始化部分
很遗憾,这并没有被推广为与DUnit合作的标准方式。其他语言的大多数单元测试框架都是这样组织的。它们提供了一个测试运行程序可执行文件,可以从任意数量的可加载模块动态加载测试用例
除了允许您分解测试以便于组织之外,它还允许您在多个场景下运行相同的测试。也许您希望为调试和发布版本(甚至是编译器的不同版本)使用不同的编译器选项来运行测试,以便您对代码的行为一致性更有信心。您可以从同一个源构建多个DLL,并在同一个会话中运行它们。我们甚至没有考虑同时执行这两个操作:-),但它确实有它的优点。但最大的缺点当然是新创建的单元测试没有添加到integrationTest套件中。@Bascy为此,您需要定期观察单元测试覆盖率,例如使用此处的工具:这对我来说也是新的!谢谢你的更新。我想DUnit2也有同样的可能性?与我的同事讨论这个问题时,我们甚至想到了创建test.bpl的想法,它适用于我们库中的每一个.bpl,以及一个通用的“RunTests.exe”,可以将.bpl作为插件加载到可执行文件中哦,伙计,这太棒了!我希望我很久以前就知道这一点:-)希望我能做得更多+1@Bascy是的,此功能在fork之前可用。DUnit2在宣传方面做得更好一些。我不确定他们是否改进了,因为我还没有尝试DUnit2。