How to mock super class method using Mockito or anyother relavent java framework(如何使用 Mockito 或任何其他相关的 Java 框架来模拟超类方法)
问题描述
我的场景如下
class SuperClass{
public void run(){
System.out.println("I am running in Super class");
}
}
class ChildClass extends SuperClass{
public void childRunner(){
System.out.println("Step 1");
System.out.println("Step 2");
**run();**
System.out.println("Last Step");
}
}
现在我想模拟 ChildClass
的 childRunner()
方法,因为这个方法在内部调用超类方法,我需要一些帮助/一段代码来说明如何模拟 ChildClass
的 childRunner()
方法中存在的 run()
方法.
Now I want to mock the childRunner()
method of ChildClass
and since this method internally calls the super class method, i need some help/piece of code on how to mock the run()
method which is present in the childRunner()
method of ChildClass
.
推荐答案
理想情况下,您应该优先考虑组合而不是继承".
Ideally, you should "favor composition over inheritance".
如果你没有这个选项,你可以使用 doNothing
,它基本上告诉 Mockito 在调用 mock/spy 对象中的方法时什么都不做.这也讨论过这里
If you don't have this option you could use doNothing
which basically tells Mockito to do nothing when a method in a mock/spy object is called. This was also discussed here
以下代码示例应该会有所帮助
Following code example should help
@Test
public void tst() {
ChildClass ch = Mockito.spy(new ChildClass());
Mockito.doNothing().when((SuperClass)ch).run();
ch.childRunner();
}
class SuperClass{
public void run(){
System.out.println("I am running in Super class");
}
}
class ChildClass extends SuperClass{
public void childRunner(){
System.out.println("Step 1");
run();
System.out.println("Last Step");
}
}
输出:
Step 1
Last Step
如果你使用 super.run();这行不通
In case you use super.run(); this won't work
这篇关于如何使用 Mockito 或任何其他相关的 Java 框架来模拟超类方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何使用 Mockito 或任何其他相关的 Java 框架来模拟超类方法


基础教程推荐
- Spring AOP错误无法懒惰地为此建议构建thisJoinPoin 2022-09-13
- 无法复制:“比较方法违反了它的一般约定!" 2022-01-01
- 使用堆栈算法进行括号/括号匹配 2022-01-01
- 如何对 Java Hashmap 中的值求和 2022-01-01
- 问题http://apache.org/xml/features/xinclude测试日志4j 2 2022-01-01
- REST Web 服务返回 415 - 不支持的媒体类型 2022-01-01
- 存储 20 位数字的数据类型 2022-01-01
- 修改 void 函数的输入参数,然后读取 2022-01-01
- RabbitMQ:消息保持“未确认"; 2022-01-01
- Struts2 URL 无法访问 2022-01-01