I am stumbling about testing JUnit right now and need some help. So I got this class with static methods that will refactor some objects. To simplify, I made a small example. This is my Factory class:
class Factory { public static String factorObject() throws Exception { String s = "Hello Mary Lou"; checkString(s); return s; } private static void checkString(String s) throws Exception { throw new Exception(); } }
And this is my test class:
@RunWith(PowerMockRunner.class) @PrepareForTest({ Factory.class }) public class Tests extends TestCase { public void testFactory() throws Exception { mockStatic(Factory.class); suppress(method(Factory.class, "checkString")); String s = Factory.factorObject(); assertEquals("Hello Mary Lou", s); } }
Basically, I tried to ensure that the private checkString () method should be suppressed (therefore, no exception was thrown), and I also needed to verify that the checkString () method was actually called in the factorObject () method.
UPDATED : Suppression works correctly with the following code:
suppress(method(Factory.class, "checkString", String.class)); String s = Factory.factorObject();
... however, it returns me NULL for the string "s". Why is this?
source share