次のようなクラスを (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();
}
}
ただし、これは「すでに嘲笑された」例外につながります。
これにアプローチする方法を知っている人はいますか?