mal*_*ikh 10 junit unit-testing mockito
在我的项目中,我们已经有了 mockito-core 依赖项。我想存根静态方法,我需要为其添加模拟内联依赖项。所以想了解一下它们之间的区别。它们可以共存吗?
bea*_*u13 12
从Mockito 5.0.0开始,mockito-inline是默认的模拟制作者:
这个mockmaker [mockito-inline]创建模拟操作原始类中等效的字节码,以便其方法实现挂钩到正常的Mockito机制。作为比较,子类mockmaker为模拟生成“真正的”子类,以模仿相同的行为。虽然方法相似,但内联模拟制作器避免了 JDK 施加的某些限制。例如,它不会违反模块边界(在 JDK 9 中引入,但在 JDK 17 中使用较多),并避免子类创建的泄漏。
mockito-inline 是一个独立的、免配置的工件。(如果您想使用内联模拟制作,则mockito-core,必须配置 MockMaker 扩展文件。)但是,从Mockito 5.3.0开始,mockito-inline 不再发布!
如果您想(或必须)在 5.0.0 之后使用子类模拟制作,那么又一个单独的、免配置的工件:mockito-subclass。
子类模拟制作者还有合法的剩余用例。例如,在 Graal VM 的本机映像上,内联mockmaker将不起作用,子类mockmaker是合适的选择。此外,如果您想避免模拟最终类,可以使用子类mockmaker。但请注意,如果您只想使用子类mockmaker来避免模拟final,您将在JDK 17+上遇到上述问题。我们希望将这个选择权留给我们的用户,这就是为什么我们将继续支持子类mockmaker。
根据 3.7.7 版的最新文档,看起来 mockito 社区已经为一些实验性功能提供了 mockito-inline,例如模拟最终类和方法、模拟静态方法等。因此,一旦他们从社区获得反馈,他们就会将这些更改合并到mockito-core 并废除了 mockito-inline。最终它只会是 mockito-core。
https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#mockito-inline https://javadoc.io/static/org.mockito/mockito-core/3.7 .7/org/mockito/Mockito.html#39
| 归档时间: |
|
| 查看次数: |
5659 次 |
| 最近记录: |