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 框架来模拟超类方法


基础教程推荐
- Java:带有char数组的println给出乱码 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- 降序排序:Java Map 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01