invokeMethod()
引数で呼び出しているメソッドに明示的に名前を付けたくありません。Powermock は、invokeMethod()
渡されたパラメーターに基づいてメソッドを推測するオーバーロードを提供します。
invokeMethod(Object instance, Object... arguments)
私が直面している問題は、最初のパラメーターのタイプがString
. invokeMethod()
これにより、署名付きで が呼び出されます。
invokeMethod(Object instance, String methodToExecute, Object... arguments)
これがテストのモデルです...
@Test
public void thisIsATest() throws Exception{
TheClassBeingTested myClassInstance = new TheClassBeingTested();
String expected = "60";
String firstArgument = "123A48";
ReturnType returnedTypeValue = Whitebox.invokeMethod(myClassInstance, firstArgument, AnEnum.TypeA);
String actual = returnedTypeValue.getTestedField();
assertEquals("Expected should be actual when AnEnum is TypeA", expected, actual);
}
これは私にエラーを与えます、
org.powermock.reflect.exceptions.MethodNotFoundException: No method found with name '123A48' with parameter types: [ AnEnum ] in class TheClassBeingTested.`
最初のパラメーターのタイプを に変更して動作させましたObject
が、これは私には汚いと感じます。
@Test
public void thisIsATest() throws Exception{
TheClassBeingTested myClassInstance = new TheClassBeingTested();
String expected = "60";
Object firstArgument = "123A48";
ReturnType returnedTypeValue = Whitebox.invokeMethod(myClassInstance, firstArgument, AnEnum.TypeA);
String actual = returnedTypeValue.getTestedField();
assertEquals("Expected should be actual when AnEnum is TypeA", expected, actual);
}
メソッド名を呼び出しString
にハードコーディングせずに、最初の引数として型を渡す正しい方法はありますか? invokeMethod()
これに対処するPowermockのドキュメントやフォーラムには何も見つかりませんでしたが、それほど珍しいことではありません.