mockito-core与mockito-inline的区别

4ioopgfo  于 2023-04-30  发布在  其他
关注(0)|答案(3)|浏览(628)

在我的项目中,我们已经有了mockito-core依赖。我想存根静态方法,我需要添加mockito内联依赖。所以想了解它们之间的区别。它们能共存吗?

7jmck4yq

7jmck4yq1#

根据版本4的最新文档。2.0看起来mockito社区已经拿出了mockito-inline来提供一些实验性的特性,比如mocking final类和方法,mocking静态方法等。因此,一旦他们从社区得到反馈,他们将合并mockito-core和废除mockito-inline中的这些更改。最终,它将是只有mockito-core。
www.example. com

2izufjch

2izufjch2#

至少在mockito 3。9 mockito-inline依赖于mockito-core。你可以只声明mockito-inline。它们并不互相排斥
https://mvnrepository.com/artifact/org.mockito/mockito-inline/3.9.0

rvpgvaaj

rvpgvaaj3#

Mockito 5.0.0开始,mockito-inline是默认的mock maker:
这个mockmaker [mockito-inline]在原始类中创建mock操作字节码等价物,以便其方法实现挂钩到正常的Mockito机制中。作为比较,子类mockmaker为mock生成“真实的的”子类,以模仿相同的行为。虽然方法相似,但内联mockmaker避免了JDK强加的某些限制。例如,它不违反模块边界(在JDK 9中引入,但在JDK 17中使用得更频繁),并避免了子类创建的泄漏。
mockito-inline * 是一个独立的、无配置的工件。(如果您想使用mockito-core的内联mock制作,您必须配置MockMaker扩展文件。)但是,由于Mockito 5.3.0mockito-inline不再发布!
如果你想(或不得不)使用子类模拟制作5之后。0.0时,又出现了一个独立的、无需配置的工件:mockito亚类
对于子类mockmaker还有合法的剩余用例。例如,在Graal VM的本机映像上,内联mockmaker将不起作用,子类mockmaker是合适的选择。此外,如果你想避免mocking final类,使用子类mockmaker是一种可能性。但是请注意,如果您只想使用子类mockmaker来避免mocking final,那么您将在JDK 17+上遇到上述问题。我们希望把这个选择留给我们的用户,这就是为什么我们将继续支持子类mockmaker。

相关问题