【发布时间】:2017-07-18 11:42:14
【问题描述】:
我有一个抽象类 A,它包含两个函数,都实现了
public void entry(){}
public void exit(){}
这些是在内部进行的系统调用,我想在某些情况下避免这些调用。我正在编写一个测试(单独的类),我将在其中进行自己的调用,但我不想干扰代码的正常运行。我可以通过哪些方式实现这一目标?
我想到的一种方法是使用这两个函数创建一个接口 B,并在实现该接口并包含实际代码的抽象类中创建一个类 C。在抽象类中,我将有一个函数来设置我想要使用的接口实例化。示例:
public static void setMockProvider(B provider) {
if (provider != null) {
mockProvider = provider;
} else {
mockProvider = new C();
}
}
然后无论在哪里调用入口和出口函数,我都会做一个 mockProvider.entry() 和 mockProvider.exit()
【问题讨论】:
-
使用模拟还是间谍?
-
为什么不直接使用 A 的子类?