I'm having difficulty finding a way to set a static field of a class. It's basically like this:
public class Foo{
// ...
private static B b = null;
}
where B is another class.
Is there any way to do this in PowerMock other than with setInternalStateFromContext()
? Using the context class method seems a bit of overkill for setting one field.
Thanks.
Try this:
Don't work for primitives and primitives wrappers.
You can use
getAllStaticFields
and try to set themExample:
here I am going to set value for "android.os.Build.VERSION.RELEASE", where VERSION is the class name and RELEASE is the final static string value.
now the value of String RELEASE will return "Marshmallow".
You simply do:
where b is the instance of B that you want to set.
Works as long as you set a non-null value, and if theres only one field with the class of
B
. If you can't rely on that luxury, you have to provide the field-name and cast thenull
to the type you want to set. In that case you would need to write something like this: