我正在使用JUnit,我的情况如下:
class A{
public int[] method1(){
...
int res = method2();
...
return intArray;
}
public int method2(){
....
return intA;
}
}
我正在尝试关注模拟method2()
new MockUp<MockClass>() {
int[] methodToMock() {
int[] mockedResult = {1, 2, 4, 6};
return mockedResult;
}
};
当我将它用于另一个类时,上面的代码工作正常。 但是,如果我想从同一个类中模拟方法它不起作用。
请指导我在JUnit中找到模拟方法,从同一类中查找模拟方法。
感谢。
答案 0 :(得分:2)
public method
调用同一个类的另一个public method
并不是软件开发中的问题,但它会在您的类中创建一个内部耦合,并且可能是该类中过多责任的标志。
这不一定是真的,但可以提出这个问题
证明:在这里,单元测试变得更加困难而不会被欺骗。
我无法将此方法移至任何其他类。而这种方法也是 在其他地方使用了一些,所以我不能一次俱乐部。
有了这些限制,我建议你保留这两种公共方法,并引入一个新的类,它会影响这两种方法的共同行为。
这两个公共方法现在可以依赖公共类来进行处理。
class A{
private CommonProcess commonProcess;
public int[] method1(){
...
int res = commonProcess.method(...);
...
return intArray;
}
public int method2(){
....
commonProcess.method(...);
...
return intA;
}
}
现在,要模拟method2
或method1
中的外部依赖项,只需模拟对commonProcess.method()
的调用。