有时候,想单元测试子类的方法,但是待测试的方法里,往往会调用父类的方法,而我们只关注子类方法的测试,因此需要跳过/无效化 父类方法的调用。
本次学习笔记对这样的情形做一个举例
父类
package com.lydia;
public class Father {
public void fun(){
System.out.println("In Father#fun");
}
}
子类
package com.lydia;
public class Son extends Father {
@Override
public void fun() {
super.fun();
System.out.println("In Son#fun");
}
}
测试类
测试类如下,如果正常创建一个子类,并调用fun()方法,那么子类会先调用父类的fun(),打印出"In Father#fun", 然后再返回子类的fun()里面,打印出"In Son#fun"
但是,如果利用PowerMock强大的模拟能力,使用@RunWith(PowerMockRunner.class), 并且@PrepareForTest(准备跳过方法的父类名.class),就能像下列的方法一样,在调用子类的fun()方法时,不执行父类的fun()方法。
import com.lydia.Son;
import com.lydia.Father;
i