java单元测试之Mock静态方法
1
public final class AmountUtil { public static String CustomFormatWith2Digits(int amount) { return "1"; } }
2.引入依赖
<dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>1.10.19</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-api-mockito</artifactId> <version>1.6.5</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-junit4</artifactId> <version>1.6.5</version> <scope>test</scope> </dependency>
3.写单元测试
import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.eq; import static org.mockito.MockitoAnnotations.initMocks; import static org.mockito.Matchers.anyObject; import static org.mockito.Mockito.when; @RunWith(PowerMockRunner.class) @PrepareForTest({AmountUtil.class}) @PowerMockIgnore("javax.management.*") public class StaticClassTest { @Before public void setUp() throws Exception { initMocks(this); } @Test public void test1() throws Exception { this.mockResources(); String s = AmountUtil.CustomFormatWith2Digits(1); Assert.assertTrue(s == ""); } private void mockResources() throws Exception { PowerMockito.mockStatic(AmountUtil.class); PowerMockito.when(AmountUtil.CustomFormatWith2Digits(anyInt())).thenReturn(""); } }