语言无关 – 我应该更改代码以使其更易于测试吗?

我经常发现自己更改代码以使其更易于测试,我总是怀疑这是否是一个好主意.我发现自己做的一些事情是:

>添加setter只是为了我可以将内部对象设置为mock.
>为内部地图/列表添加getter,以便在执行某些外部操作后检查对象的内部状态是否已更改.
>包装具体系统类并创建一个新界面,以便我可以模拟它们.例如,File类很难模拟 – 所以我将创建一个新的接口FileInterface和WrappedFile,它扩展它,然后使用FileInterface而不是File.

解决方法

更改代码以使其更易于测试可能是一件好事,但前提是它使代码本身更好.重构可测试性可以使您的代码更好地独立于测试套件的需求.那是好的变化.

在你的三个例子中,只有#3是一个非常好的例子;通常,这些新接口将使您的代码更灵活,以便以后经常使用. #1通常用于通过依赖注入进行测试,在我看来,这会使代码变得更加复杂,但至少会使测试变得更容易. #2听起来总的来说是个糟糕的主意.

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...