首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Mockito的thenCallRealMethod,不调用公共方法

Mockito是一个Java开发中常用的单元测试框架,用于模拟对象行为和验证方法调用。在Mockito中,thenCallRealMethod是一个方法,用于在模拟对象中调用真实方法。

具体来说,当我们使用Mockito创建一个模拟对象时,该对象的方法默认是被屏蔽的,即不会执行真正的方法逻辑。但有时我们希望在某些情况下调用真实的方法逻辑,这时就可以使用thenCallRealMethod方法。

thenCallRealMethod方法的作用是告诉Mockito在特定情况下调用真实的方法逻辑。例如,假设我们有一个类A,其中有一个公共方法public int calculate(),我们希望在某个测试场景中调用真实的calculate方法逻辑,可以使用以下方式:

代码语言:txt
复制
A mockA = Mockito.mock(A.class);
Mockito.when(mockA.calculate()).thenCallRealMethod();

上述代码中,我们使用Mockito创建了一个A类的模拟对象mockA,并通过thenCallRealMethod方法告诉Mockito在调用mockA的calculate方法时,实际上调用真实的calculate方法逻辑。

需要注意的是,使用thenCallRealMethod方法时,需要确保被调用的方法是非私有且非final的,否则无法调用真实的方法逻辑。

Mockito的thenCallRealMethod方法在以下场景中可能会有用:

  1. 部分方法需要被模拟,但某些特定情况下需要调用真实的方法逻辑。
  2. 对于已经经过严格测试的方法,可以使用thenCallRealMethod方法来确保其真实逻辑的正确性。

对于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体品牌商,无法给出具体链接。但腾讯云提供了丰富的云计算服务,包括云服务器、云数据库、云存储等,可以根据具体需求选择适合的产品。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

跨层单元测试de歪门邪道

一般来说,Spring应用的单元测试都是发生在该应用的某个层,例如controller、service或者是dao层。 而service层既是应用服务的主要实现者,也是重点被测试的对象,其余各层,如controller层一般以线性代码为主,缺少业务逻辑,可以少测甚至是不测。 不过也有些团队会认为,既然应用的入口是controller,那么从controller层入口对服务进行测试,更贴合用户的场景,这部分的测试也更有业务价值,也更能提升对产品质量的信心。如果某些测试场景或者分支是通过controller层无法达到的,那么这部分的测试优先级就可以降低。 因此,笔者就见到过controller连同service一起进行测试的场景,也就是所谓的跨层单元测试 还是以TestLink4J为例,有如下用例

01
领券