在谈论单元测试时,“DAMP not DRY”是什么意思?

2024-02-29

我听到有人说单元测试(例如 nUnit、jUnit、xUnit)应该

DAMP http://blog.jayfields.com/2006/05/dry-code-damp-dsls.html not DRY http://en.wikipedia.org/wiki/Don%27t_repeat_yourself

(例如,单元测试应包含“潮湿代码”而不是“干燥代码”)

他们在说什么?


这是一种平衡,而不是矛盾

DAMP 和 DRY 并不矛盾,而是平衡了代码的两个不同方面可维护性。可维护的代码(易于更改的代码)是这里的最终目标。

DAMP(描述性和有意义的短语)促进可读性的代码。

要维护代码,首先需要理解代码。要理解它,你必须阅读它。考虑一下您花费了多少时间reading代码。很多。DAMP 通过减少阅读和理解代码所需的时间来提高可维护性。

DRY(不要重复)促进正交性 http://www.artima.com/intv/dry.html的代码。

消除重复可确保系统中的每个概念在代码中都有单一的权威表示。对单个业务概念的更改会导致对代码的单个更改。DRY 通过将更改(风险)仅隔离到系统中必须更改的部分来提高可维护性。

那么,为什么重复在测试中更容易被接受呢?

测试通常包含固有的重复,因为它们一遍又一遍地测试相同的东西,只是输入值或设置代码略有不同。然而,与生产代码不同,这种重复通常仅与单个测试装置/文件中的场景隔离。因此,重复是最小且明显的,这意味着与其他类型的重复相比,它给项目带来的风险更小。

此外,删除这种重复会降低测试的可读性。以前在每个测试中重复的细节现在隐藏在一些新方法或类中。为了全面了解测试,您现在必须在心里将所有这些部分重新组合在一起。

因此,由于测试代码重复通常带来的风险较小,并且提高了可读性,因此很容易看出它如何被认为是可接受的。

原则上,在生产代码中支持 DRY,在测试代码中支持 DAMP。虽然两者同样重要,但只要有一点智慧,您就可以使平衡向对您有利的方向倾斜。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在谈论单元测试时,“DAMP not DRY”是什么意思? 的相关文章

随机推荐