In
this post, I am going to explain how to mock static non-void private methods.
Following
snippet is used to mock the static non-void private method ‘readInputFromUI’.
String
message = "Enter a number";
String
methodToMock = "readInputFromUI";
PowerMock.mockStaticPartial(InputUtil.class,
methodToMock);
PowerMock.expectPrivate(InputUtil.class,
methodToMock, message).andReturn(10).times(1);
Following
is the complete working application.
InputUtil.java
package com.sample.tests; import javax.swing.JOptionPane; public class InputUtil { public static int readInput(String message){ return readInputFromUI(message); } private static int readInputFromUI(String message){ int number = Integer.parseInt(JOptionPane.showInputDialog(message)); return number; } }
InputUtilTest.java
package com.sample.tests; import static org.junit.Assert.assertEquals; 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() throws Exception { String message = "Enter a number"; String methodToMock = "readInputFromUI"; PowerMock.mockStaticPartial(InputUtil.class, methodToMock); PowerMock.expectPrivate(InputUtil.class, methodToMock, message).andReturn(10).times(1); PowerMock.replayAll(); int number = InputUtil.readInput(message); assertEquals(number, 10); PowerMock.verifyAll(); } }
No comments:
Post a Comment