如何处理纠结的使用依赖关系以开始单元测试?

时间:2012-08-21 11:10:27

标签: delphi unit-testing delphi-7 dunit

我有一个凌乱的Delphi 7遗留系统来维护和开发。我已经在阅读“有效地使用遗留代码”,我非常喜欢这本书。

为了开始遵循本书中的建议,我创建了一个测试项目,并尝试编写一个测试。为此,我需要在测试项目中添加一些单元,但这里存在问题:被测系统具有可怕的使用依赖性。一个单位使用其他单位,使用其他单位等等,等等。似乎大多数单位直接或间接使用一个特定单位,而这个单位在其使用条款中依次有170个依赖项。还存在间接循环依赖。

目前我正在尝试将所有遗留系统的单元添加到测试项目中,但我遇到了各种问题,例如“单元xxx是使用不同版本的xxx编译的”等等。

所以我想知道我做错了什么。我之前使用过单元测试,但在我自己的项目中,它更小,具有更好的结构和模块化。在这种情况下我有哪些选择?我错过了什么吗?

1 个答案:

答案 0 :(得分:4)

您的代码中始终存在依赖项。好吧,只要你重复使用代码,你就会有依赖关系。由于您正在测试遗留系统,批量重组是不可能的。

所以你只需要接受依赖项。最方便实用的方法是拥有一个单元测试项目。该项目包含所有单元测试。使用跑步者计划的设施,任何时候都只能运行特定的测试。

这导致您的项目在其.dpr文件中具有与主项目相同的单元列表。这就是你目前所尝试的,这是正确的方法。

您的问题听起来像是在主项目和单元测试项目之间共享DCU目录(单元输出目录)。并且您有两个项目的不同编译器选项。这是您报告错误的最可能的解释。

有几个明显的解决方案:

  1. 对齐两个项目的编译器选项。然后他们可以共享DCU。
  2. 为这两个项目提供单独的DCU目录。
  3. 选项2更加强大,是最佳实践。但是,您应该尝试理解编译器选项的不同之处。很可能需要更改新单元测试项目中的编译器选项,以便测试中的单元根据需要进行编译和运行。在现代Delphi中,我会使用选项集来确保编译器选项的一致性。

    现在,您可能遇到其他技术问题,我对错误的解释可能不太正确,因为我不得不猜一点。但最重要的是,在.dpr文件中使用相同的单元列表是可行的方法。