我承认我几乎没有统一的经验。不久前,我尝试了Dunit,但放弃了,因为我的应用程序中的课程之间有很多依赖关系。这是一个相当大的Delphi应用程序(约150万个源线),我们是维护它的团队。

现在的测试是由一个人在发布之前使用它的人进行的。我还在TestComplete 6中设置了一些GUI测试,但是由于应用程序的变化,它通常会失败。

Delphi的粗体用作针对数据库的持久框架。我们都同意,Unitesting是要走的路,我们计划在Dotnet中编写以Eco为持续框架的新应用程序。

我只是不知道从哪里开始...有没有好的书,URL,最佳练习等?

有帮助吗?

解决方案

好吧,单位测试的挑战不是测试本身,而是 编写可测试代码. 。如果编写代码 不是 考虑测试,那么您可能会非常困难。

无论如何,如果您可以重构,请进行重构以使其可测试。不要尽可能将对象创建与逻辑混合(我不知道Delphi,但可能会有一些依赖性注入框架可以在此提供帮助)。

这个博客 对测试有很多很好的见解。查看 本文 例如(我的第一个建议是基于它)。

至于建议,请尝试先测试代码的叶节点,这些类不依赖其他类。它们应该更容易测试,因为它们不需要模拟。

其他提示

编写旧版代码的单元测试通常需要大量重构。涵盖这是迈克尔·菲瑟(Michael Feather)的出色书有效地使用旧版代码"

另一个建议:使用单元测试覆盖工具来指示您在这项工作中的进度。我不确定Delphi代码的良好覆盖范围工具是什么。我想这将是另一个问题/主题。

有效地使用旧版代码

最受欢迎的方法之一是在修改代码时编写单元测试。所有新代码都将获得单元测试,对于您修改的任何代码,首先编写测试,对其进行验证,对其进行修改,重新验证它,然后由于修改而编写/修复所需的任何测试。

拥有良好的单位测试覆盖范围的最大优势之一是能够验证您所做的更改不会无意间破坏其他东西。这种方法使您能够做到这一点,同时将精力集中在您的直接需求上。

我采用的替代方法是通过合作社开发我的单位测试:)

当您使用Legacy Code时,模拟objetcs对于构建单元测试确实很有用。

看看有关Delphi和Mocks的这个问题: 您最喜欢的Delphi模拟图书馆是什么?

对于.net Unitesting,请阅读以下内容:”单元测试的艺术:带有.NET的示例"

关于最佳船长:
您所说的是对的:有时候,由于类之间的依赖关系,很难编写单元测试...因此,在刚或之前或之前编写单元测试;-)的实现。这样,如果您有一些编写测试的困难,也许意味着您有一个设计问题!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top