我想测试(使用 JMockit)一个如下所示的类:
class MyClass extends ComplexParentClass {
public void testedMethod() {
...
}
private int complexPrivateMethod() {
...
}
}
我无法更改类(class)。问题在于 ComplexParentClass 有一个复杂的构造函数,这使得测试变得困难。所以我想 mock 父类。我还想模拟复杂的私有(private)方法。但这样的事情可能吗?
我尝试了以下方法:
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();
}
}
这会导致“已经 mock ”异常。
有人知道如何解决这个问题吗?
最佳答案
您尝试过使用 MockUp 吗?像这样的东西只会模拟 complexPrivateMethod
:
@Test public void test() {
new MockUp<ComplexParentClass> () {
@Mock private int complexPrivateMethod() { return 0; }
};
//do something with MyClass
}
关于java - JMockit - 部分模拟和模拟父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32253101/