JMockit 1.1を使用しています。私がやりたいことは、プライベートメソッドを呼び出して戻り値をテストすることだけです。しかし、私は正確にこれを行う方法を理解するのが難しいです、JMockit De-Encapsulationの例からです。JMockitでプライベートメソッドを呼び出して結果をテストする
私がテストしようとしているメソッドは、このクラスのプライベートメソッドです:
public class StringToTransaction {
private List<String> parseTransactionString(final String input) {
// .. processing
return resultList;
}
}
そして、私のテストコードは以下の通りです。
@Test
public void testParsingForCommas() {
final StringToTransaction tested = new StringToTransaction();
final List<String> expected = new ArrayList<String>();
// Add expected strings list here..
new Expectations() {
{
invoke(tested, "parseTransactionString", "blah blah");
returns(expected);
}
};
}
そして、私は取得していますエラーは次のとおりです。私はただの結果をテスト..私はクラスをモックとしたいとは思わないので、
はおそらく、私は、ここでは全体のAPIを誤解していますプライベートメソッドを呼び出すjava.lang.IllegalStateException: Missing invocation to mocked type at this point; please make sure such invocations appear only after the declaration of a suitable mock field or parameter
こんにちは@JeffOlson - そのクラスはどのinvoke()メソッドですか? Expectationsでは、invoke()は保護されたインスタンスメソッドです。あるいは、java.lang.reflect.Method.invoke()を使用してJMockitを完全に無視してください。 –
最後に私は理解しています。それは 'Deencapsulation.invoke'です。@ JeffOlsonに感謝し、https://グループのRogerioに感謝します。 google.com/d/msg/jmockit-users/oEgjW0DfmgU/3pEE1mjt1ncJ –
はい、正しいです。申し訳ありませんがもっと明確ではありませんが、最初の例では(おそらく静的インポートを介して) 'invoke()'を直接使用していたので、そのまま残しておくと思いました。私は、これを将来読むかもしれない誰かのために、私の答えをより明確にするように更新するつもりです。 –