您好:通常您使用模拟(java 代理)来替换类中的对象。
例如:
public class ClassA{
public ClassB realObjectB;
public ClassC realObjectC;
public void Method1(){
realObjectC = new ClassC();
realObjectB = new ClassB(realObjectC);
}
...
...
}
public class ClassB {
public void ParticularInhereitedMethod(){
many dependency objects involved...
}
}
当然,ClassB 和 ClassC 还有很多其他的依赖关系,例如连接池。
当我进行测试时,我可以这样做:
public class Mock extends ClassB{
@override
public class ParticularInhereitedMethod(){
Make clean codes, no dependency.
}
}
在测试应用中:
public class MainClass{
public static void main(String[] args){
ClassA a = new ClassA();
ClassM m = new Mock();
a.realObjectB = m;
manipulate m;
}
}
上述方法在实际测试中有效吗?为什么我必须使用 Java 代理(字节码替换)?