私は最近exisitngプロジェクトや問題の直面しているカップルのためのTDDの作業を開始し、それらの一つは、モッキング/ getterメソッドとsetterメソッドなしクラスのプライベート変数をスタブ
の下に記載されて私はで嘲笑するプライベート変数を持っています
以下private Class<XYZ> cls = XYZ.class;
この後の「CLS」変数はクラス名
private List create(Class className, Object objectTO, List<String> names)
Iの方法のいずれかのarugmentとして使用されるようにテストクラスと変数が見えます私は下に次のことで私のテストケース内のプライベート変数iが私のテストクラスを実行すると
- が
java.lang.reflect.Field;
Field field = PowerMockito.field(XYZ.class,"cls");
field.set(XYZ.class, "objectOfXYZClass");
を宣言手順嘲笑プライベート変数を嘲笑することができます知っていると 、私はエラー未満になっています
java.lang.IllegalArgumentException: Can not set java.lang.Class field com.tools.XYZ.cls to java.lang.Class
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:164)
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:168)
at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:55)
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:75)
at java.lang.reflect.Field.set(Field.java:680)
誰かが私にこれを手伝ってくれて、私に何が足りないのか教えてください。
PS:私は@preparefortest
を使用し、その中のすべての必要なクラスを言及し、設定、クラスのインスタンスに入れ@runwith(powermockrunner.class)
@ Sarseth ..私のために働いた。私の悪い、filed .set()私は他のやり方でやっていた...ありがとう。 –