Junit Powermock测试失败
我想用Powermockrunnner替换我的JUnitRunner(以便进一步使用Powermock的功能,而这是simple Mockito所没有的) 因此,我添加了依赖项,替换了测试类中的运行程序,添加了@PrepareForTest注释,并且在编写任何进一步的测试代码之前,运行了现有的测试来验证它们 在大约25个测试中,有5个或6个由于明显的功能原因而失败(我的意思是,它们在运行代码中的实际故障上失败,而不是在一些基础结构错误上) 在正常状态下,这些测试是100%一致和非片状的Junit Powermock测试失败,junit,mockito,powermock,Junit,Mockito,Powermock,我想用Powermockrunnner替换我的JUnitRunner(以便进一步使用Powermock的功能,而这是simple Mockito所没有的) 因此,我添加了依赖项,替换了测试类中的运行程序,添加了@PrepareForTest注释,并且在编写任何进一步的测试代码之前,运行了现有的测试来验证它们 在大约25个测试中,有5个或6个由于明显的功能原因而失败(我的意思是,它们在运行代码中的实际故障上失败,而不是在一些基础结构错误上) 在正常状态下,这些测试是100%一致和非片状的 这样的更
这样的更改怎么会使工作测试完全失败?为了帮助您诊断问题,您必须发布一些失败的测试 但老实说;你进错兔子洞了 PowerMock(ito)在Mockito上提供的仅有两个特性是:它可以模拟静态调用和对new()的调用 您为这些功能支付的奖金:
- Mockito的后台版本是强制的。Mockito本身现在是2.8版本;但是PowerMockito不能使用比Mockito 2.0.40测试版更新的东西(Mockito团队几乎每周都发布一次!)
- PowerMock依赖于字节码操作。意思是:模拟静态调用会更改生产代码。是的,所有这些都有效。但是只要看看这里标记的所有PowerMock,您可能会注意到一种模式。有相当多的关于模糊问题的问题,往往得不到解答。一旦您开始使用Oracle以外的其他JVM。。。“乐趣”是有保证的。(相信我,我去过那里!)
- PowerMock与其他需要字节码操作的框架(例如用于覆盖率测量的EcLemma)并不匹配
2%的个人经验:当我们开始单元测试时,我们的团队正在使用PowerMock。我们花了无数个小时研究这些奇怪的PowerMock问题。最后:我们学习了如何编写更好的生产代码;我们学会了如何用Mockito正确地测试它们。我们不再使用PowerMock;我们从未对这一决定感到遗憾 为了帮助您诊断问题,您必须发布一些失败的测试 但老实说;你进错兔子洞了 PowerMock(ito)在Mockito上提供的仅有两个特性是:它可以模拟静态调用和对new()的调用 您为这些功能支付的奖金:
- Mockito的后台版本是强制的。Mockito本身现在是2.8版本;但是PowerMockito不能使用比Mockito 2.0.40测试版更新的东西(Mockito团队几乎每周都发布一次!)
- PowerMock依赖于字节码操作。意思是:模拟静态调用会更改生产代码。是的,所有这些都有效。但是只要看看这里标记的所有PowerMock,您可能会注意到一种模式。有相当多的关于模糊问题的问题,往往得不到解答。一旦您开始使用Oracle以外的其他JVM。。。“乐趣”是有保证的。(相信我,我去过那里!)
- PowerMock与其他需要字节码操作的框架(例如用于覆盖率测量的EcLemma)并不匹配
2%的个人经验:当我们开始单元测试时,我们的团队正在使用PowerMock。我们花了无数个小时研究这些奇怪的PowerMock问题。最后:我们学习了如何编写更好的生产代码;我们学会了如何用Mockito正确地测试它们。我们不再使用PowerMock;我们从未对这一决定感到遗憾 虽然这是一篇老文章,但我最近也有类似的经历,遇到了PowerMock和Mockito之间的依赖关系矩阵 当我们在Springboot项目中同时使用Mockito和PowerMock依赖项时,我们需要谨慎使用PowerMock和Mockito的版本 这是同样的理由
通常,SpringBootStarter测试附带Mockito版本。在我的例子中,我必须从starter中排除Mockito依赖项,并添加与最新PowerMock版本配合良好的Mockito版本。如果这对任何人都有帮助,我会很高兴。虽然这是一篇老文章,但我最近也有过类似的经历,并且遇到了PowerMock和Mockito之间的依赖关系矩阵 当我们在Springboot项目中同时使用Mockito和PowerMock依赖项时,我们需要谨慎使用PowerMock和Mockito的版本 这是