我想测试(使用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();
}
}
这会导致“已经嘲笑”的例外情况。
有人知道如何处理这个问题吗?
答案 0 :(得分:0)
您是否尝试过使用MockUps?这样的事情只会模仿complexPrivateMethod
:
@Test public void test() {
new MockUp<ComplexParentClass> () {
@Mock private int complexPrivateMethod() { return 0; }
};
//do something with MyClass
}