Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PowerMock testing - set static field of class

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.

like image 459
Craig Anderson Avatar asked Mar 21 '11 23:03

Craig Anderson


1 Answers

Whitebox.setInternalState(Foo.class, b); 

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 the null to the type you want to set. In that case you would need to write something like this:

 Whitebox.setInternalState( Foo.class, "b", (B)null ); 
like image 127
cproinger Avatar answered Sep 18 '22 17:09

cproinger