クラスの静的フィールドを設定する方法を見つけるのに苦労しています。基本的には次のようになります。
public class Foo{
// ...
private static B b = null;
}
ここで、B は別のクラスです。
以外にPowerMockでこれを行う方法はありますsetInternalStateFromContext()
か? コンテキスト クラス メソッドを使用すると、1 つのフィールドを設定するのに少しやり過ぎに思えます。
ありがとう。
Whitebox.setInternalState(Foo.class, b);
null以外の値を設定し、クラスが。のフィールドが1つしかない場合に限り、機能しますB
。その贅沢に頼ることができない場合は、フィールド名を指定null
し、設定するタイプにキャストする必要があります。その場合、次のように書く必要があります。
Whitebox.setInternalState( Foo.class, "b", (B)null );
あなたは単に行う:
Whitebox.setInternalState(Foo.class, b);
ここで、b は、設定する B のインスタンスです。
getAllStaticFields
それらを使用して設定することができます
例:
YourFieldClass newValue;
final Set<Field> fields = Whitebox.getAllStaticFields(YourClass.class);
for (final Field field : fields) {
if (YourFieldClass.class.equals(field.getType())) { // or check by field name
field.setAccessible(true);
field.set(YourClass.class, newValue);
} }