【发布时间】:2016-11-01 12:33:48
【问题描述】:
我正在使用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 中找到模拟方法,模拟来自同一类的方法。
谢谢。
【问题讨论】:
-
首先你应该问自己为什么你要模拟
method2?它是否包含超出类其他范围的行为?如果不是它自己的类,是否应该将其移至其他类? -
你没有告诉你使用的是哪个模拟框架。如果您使用 Mockito,您可以为被测类创建
spy并为method2配置替代行为。 -
@TimothyTruckle 我正在使用 JMockit。
-
我不能将此方法移动到任何其他类。而且这种方法也用在其他地方,所以我不能把它合二为一。
标签: java unit-testing junit mocking