我想测试(使用 JMockit)一个看起来像这样的类:
class MyClass extends ComplexParentClass {
public void testedMethod() {
...
}
private int complexPrivateMethod() {
...
}
}
我不能改变班级。问题是 ComplexParentClass 有一个复杂的构造函数,这使得它很难测试。所以我想模拟父类。我还想模拟复杂的私有方法。但这样的事情可能吗?
我尝试了以下方法:
class MyClassTest {
@Tested
MyClass myClass;
// mock the parent
@Mocked
ComplexParentClass complexParentClass;
@Test
public void test() {
new Expectations(myClass) {{
// partially mock the private method
Deencapsulation.invoke(myClass, "complexPrivateMethod"); result = 0;
}};
myClass.testedMethod();
}
}
不过,这会导致“已经模拟”的异常。
有人知道如何解决这个问题吗?