gpt4 book ai didi

Java,实例替换而不是 Mock

转载 作者:行者123 更新时间:2023-12-02 00:06:10 26 4
gpt4 key购买 nike

嗨:通常你使用mock(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代理(字节码替换)?

最佳答案

我建议使用 Mockito http://code.google.com/p/mockito/和 Spring 注入(inject)来解决您的问题。

使用mockito可以从参数中声明对象的返回参数,使用spring可以在运行时解析对象的实例

关于Java,实例替换而不是 Mock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13843469/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com