パブリック メソッド呼び出しの場合、EasyMock の capture() を使用すると、メソッドに渡された引数をインターセプトして調べることができます。プライベート メソッド呼び出しの場合、PowerMock の expectPrivate を使用すると、プライベート メソッド呼び出しをモックできます。
これらを何らかの方法で組み合わせて、プライベート メソッド呼び出しに渡される引数を取得する方法はありますか? 例:
public class Program
{
public FancyReturnType PublicMethod()
{
ArbitraryType localInstance = new ArbitraryType();
localInstance.setFoo(somePrivateHelperMethod());
localInstance.setBar(increasinglyComplexMagic());
long aLongValue = 11235L;
// more variables, more work
SomeType worker = privateHelperToIntercept(localInstance, aLongValue, otherVariables);
if (worker.something)
{
return retVal.aFancyReturnType;
}
else
{
return retVal.anotherFancyReturnType;
}
}
}
この場合、呼び出しlocalInstance
によって消費されるオブジェクトを調べたいと思います。privateHelperToIntercept()
プライベート メソッド呼び出しをモックする例はたくさんあります。PowerMock はうまくexpectPrivate(partiallyMockedObject, "nameOfPrivateMethod", arg1, arg2)
機能します。また、パブリック メソッド呼び出しに渡される引数をインターセプトする例も見つけました。Capture<Type> myTestCapture = new Capture<Type>()
と組み合わせるsomeMockedObject.PublicMethod(capture(myTestCapture))
。
残念ながら、この 2 つを連携させることも、それらを組み合わせた例も見つけることができません。誰もこれを行う方法を見たことがありますか?
FWIW、私は Mockito がこれを行うことができると思いますが、ソース/ビルド/テスト システムには含まれていません。可能であれば、システムで新しいライブラリをサポートするプロセスを避けたいです。