谦逊对象

2020年4月29日

某些程序元素本质上难以测试,甚至无法测试。这些元素中的任何逻辑因此容易出现错误,并且难以演变。为了减轻这个问题,尽可能将逻辑从难以测试的元素中移出,并将其移入代码库中其他更友好的部分。通过使不可测试的对象变得谦逊[1],我们减少了它们隐藏错误的可能性。

一个常见的例子是用户界面。一些平台没有提供钩子来让我们对 UI 控件运行自动化测试。即使那些提供钩子的平台,也往往会使测试变得困难,需要复杂的设置、特殊的框架以及运行缓慢的测试。但是,我们可以通过确保这些控件具有最少的行为来有效地进行测试,使用像演示模型 (MVVM)被动视图 这样的模式。

有关此方法的更多详细信息,关键来源是 Gerard Meszaros 的 xUnit 测试模式一书 - 关于谦逊对象 的条目在线提供,并包含更多深度内容,包括变体和示例。

笔记

1: “谦逊”一词的使用起源于Michael Feathers 的一篇文章