java - Powermock and Mockito. Avoid static initialization for a class while mocking and stubing the same class -
suppose have class named util static fields:
public class util { public static field = param.getvalue("param1"); } and class param this:
public class param { public static field = someclass.getvalue("somevalue"); } i want mock , stubb param.getvalue("param1") inside util, @ same time want suppress static initialization param class. how can achieve this?
this first attempt it's not working
@runwith(powermockrunner.class) @preparefortest({param.class}) @suppressstaticinitializationfor("py.com.company.param") public class test { @test public void testsomemethod() { powermockito.mockstatic(param.class); when(param.getvalue("value1")).thenreturn("somevalue1"); } }
this working me. no output, , someclass#getvalue if no @suppressstaticinitializationfor:
@runwith(powermockrunner.class) @suppressstaticinitializationfor({"so35047166.param"}) @preparefortest({param.class}) public class utiltest { @before public void setup() throws exception { powermockito.mockstatic(param.class); } @test public void testfoo() throws exception { final util util = new util(); assertequals("util#foo", util.foo()); assertequals(null, util.field); } } with:
// in package so35047166; public class util { public static string field = param.getvalue("param1"); public string foo() { return "util#foo"; } } public class param { public static string field = someclass.getvalue("somevalue"); public static string getvalue(final string in) { system.out.println("param#getvalue"); return "param#getvalue"; } } public class someclass { public static string getvalue(final string in) { system.out.println("someclass#getvalue"); return "someclass#getvalue"; } }
Comments
Post a Comment