gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 15:00:58 24 4
gpt4 key购买 nike

我有一个困惑的 Delphi 7 遗留系统需要维护和开发。我已经在阅读《有效地处理遗留代码》并且我非常喜欢这本书。

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

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

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

最佳答案

您的代码中将始终存在依赖项。好吧,只要你有代码重用,你就会有依赖关系。由于您正在测试遗留系统,因此不可能进行大规模重组。

所以你只需要接受依赖关系。最方便实用的方法是拥有一个单元测试项目。该项目包含您的所有单元测试。使用运行程序的功能在任何时间仅运行特定的测试。

这会导致您的项目的 .dpr 文件中的单元列表与主项目相同。这就是您目前尝试过的方法,也是正确的方法。

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

有几个明显的解决方案:

  1. 调整两个项目的编译器选项。然后他们可以共享 DCU。
  2. 这两个项目有单独的 DCU 目录。

选项 2 更加强大,并且是最佳实践。但是,您应该尝试理解编译器选项不同的原因。很可能需要更改新单元测试项目中的编译器选项,以便测试中的单元能够按需要进行编译和运行。在现代 Delphi 中,我会使用选项集来确保编译器选项的一致性。

现在,您可能面临其他技术问题,并且我对错误的解释可能不太正确,因为我必须进行一些猜测。但最重要的是,在 .dpr 文件中拥有相同的单位列表才是正确的方法。

关于delphi - 如何处理纠结的使用依赖关系以便开始单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12053573/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com