您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Java如何使用Mockito模拟最终课程

Java如何使用Mockito模拟最终课程

仅在Mockito v2中可以模拟最终/静态类/方法

将此添加到你的gradle文件中:

testImplementation 'org.mockito:mockito-inline:2.13.0'

使用Mockito常见问题解答中的 Mockito v1,这是不可能的:

`What are the limitations of Mockito - Needs java 1.5+ - Cannot mock final classes

…`

Mockito 2现在支持最终的类和方法

但是现在这一个“孵化”功能。它需要一些步骤来激活它,如《 Mockito 2的新增功能》所述:

最终课程和方法的模拟是一个孵化器,可以选择加入。它结合使用Java代理工具和子类,以实现这些类型的可模拟性。由于此功能与我们当前的机制不同,并且此机制具有不同的局限性,并且我们希望收集经验和用户反馈,因此必须明确激活此功能才能使用;通过创建src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker包含单行的文件,可以通过模仿扩展机制完成此操作:

mock-maker-inline

创建此文件后,Mockito将自动使用此新引擎,并且可以执行以下操作:

 final class FinalClass {
   final String finalMethod() { return "something"; }
 }

 FinalClass concrete = new FinalClass(); 

 FinalClass mock = mock(FinalClass.class);
 given(mock.finalMethod()).willReturn("not anymore");

 assertThat(mock.finalMethod()).isNotEqualTo(concrete.finalMethod());

在随后的里程碑中,团队将带来使用该功能的编程方式。我们将为所有无法模拟的场景确定并提供支持。请继续关注,请告诉我们您对此功能的看法!

java 2022/1/1 18:21:28 有495人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶