我想用Powermockrunnner替换我的JUnitRunner(为了进一步使用简单的Mockito没有的Powermock功能)。
所以我添加了依赖项,替换了我的测试类中的运行器,并添加了@PrepareForTest注释,在编写任何进一步的测试代码之前,运行我现有的测试来验证它们。
在大约25次测试中,5或6次失败显然有功能性原因(我的意思是他们在运行代码中的实际失败时失败了,而不是在一些基础设施错误上)。
在正常状态下,这些测试是100%一致且非片状的。
这样的改变怎么可能无法完全运行测试?
答案 0 :(得分:3)
为了帮助您诊断问题,您必须发布一些失败的测试。
但老实说;你在这里走错了兔子洞!
PowerMock(ito)提供的仅有两个功能超过Mockito:它可以模拟静态调用和调用new()。
您为这些功能支付的奖金:
除此之外:你的需要使用PowerMock并不是一成不变的。它基于您创建难以测试代码的事实。
因此我的建议是:学习如何编写易于测试的代码(例如,通过观察这些videos)。核心方面:易于测试的代码很可能也是更好设计的。 静态会导致紧耦合,并且会破坏多态性,这是OO的本质。
所以,我的建议是:升级到最新版的Mockito;而不是花时间去了解A)过去引起很多痛苦的框架B)鼓励你不要修复破损的设计,而是解决它们。
2%的个人经验:当我们开始进行单元测试时,我们的团队正在使用PowerMock。我们花了无数个小时来研究一些奇怪的PowerMock问题。最后:我们学会了如何编写更好的生产代码;我们学会了如何用Mockito正确测试它们。我们不再使用PowerMock了;我们从未后悔这个决定。
答案 1 :(得分:0)
尽管这是一篇老文章,但我最近也有类似的经历,并且遇到了PowerMock和Mockito之间的依赖关系矩阵。
当在Springboot项目中同时使用Mockito和PowerMock依赖项时,我们需要对所使用的PowerMock和Mockito的版本保持谨慎。
通常,Spring Boot启动程序测试带有Mockito版本。就我而言,我必须从启动器中排除Mockito依赖项,并添加与最新PowerMock版本一起使用的Mockito版本。如果这对任何人有帮助,都会很高兴。