多年来,我一直是 EasyMock 的粉丝,多亏了 SO,我发现了对 PowerMock 的引用,它能够模拟构造函数和静态方法,这两种方法都会在对遗留代码库进行测试时引起问题。
显然,单元测试(和 TDD)的巨大好处之一是它导致(强制?)更清洁的设计的方式,在我看来,PowerMock 的引入可能会减损这一点。我认为这主要表现为:
- 回到初始化协作者而不是注入它们
- 使用静态而不是让方法归合作者所有
除此之外,关于我的代码被字节码操纵以进行测试的事情并不完全适合我。具体的原因我也说不出来,只是觉得这只是为了测试而不是为了生产,让我感到有些不安。
在我目前的演出中,我们确实在推动单元测试作为人们改进编码实践的一种方式,感觉就像将 PowerMock 引入方程式可能会让人们稍微跳过这一步,所以我不愿意开始使用它。话虽如此,我真的可以看到在哪里使用它可以减少开始测试类所需的重构量。
我想我的问题是,人们对这些功能使用 PowerMock(或任何其他类似库)的经验是什么,您会使用它们吗?您希望您的测试在多大程度上影响您的设计?