In
my previous post, I explained how to mock a static void method. In this post, I
am going to explain how to mock static void parameterized method.
InputUtil.java
package com.sample.tests; import javax.swing.JOptionPane; public class InputUtil { public static void readInput(String message){ readInputFromUI(message.toUpperCase()); } public static void readInputFromUI(String message){ JOptionPane.showInputDialog(message); } }
Suppose,
I want to test whether readInput method calls the readInputFromUI method and
pass the argument in upper case or not.
Following
snippet tests, whether ‘readInputFromUI’ is called with the string in upper
case or not.
String message =
"Enter Your Name";
PowerMock.mockStaticPartial(InputUtil.class,
"readInputFromUI");
InputUtil.readInputFromUI(message.toUpperCase());
PowerMock.expectLastCall().times(5);
PowerMock.replayAll();
InputUtilTest.java
package com.sample.tests; import org.junit.Test; import org.junit.runner.RunWith; import org.powermock.api.easymock.PowerMock; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; @RunWith(PowerMockRunner.class) @PrepareForTest({ InputUtil.class }) public class InputUtilTest { @Test public void mockVoidEvenMethod() { String message = "Enter Your Name"; PowerMock.mockStaticPartial(InputUtil.class, "readInputFromUI"); InputUtil.readInputFromUI(message.toUpperCase()); PowerMock.expectLastCall().times(5); PowerMock.replayAll(); for (int i = 0; i < 5; i++) { InputUtil.readInput(message); } } }
No comments:
Post a Comment