PowerMock Mock 静态方法

x33g5p2x  于2021-12-28 转载在 其他  
字(1.3k)|赞(0)|评价(0)|浏览(312)

– Start
假设我们有如下类。

  1. package demo01;
  2. import java.util.List;
  3. public class BusinessService {
  4. public List<String> getAllUser() {
  5. return BusinessUtil.getAllUser();
  6. }
  7. }

它调用如下的静态方法。

  1. package demo01;
  2. import java.util.Arrays;
  3. import java.util.List;
  4. public class BusinessUtil {
  5. public static List<String> getAllUser() {
  6. return Arrays.asList("zhangsan", "lisi");
  7. }
  8. }

下面我们看看如何测试。

  1. package demo01;
  2. import java.util.Arrays;
  3. import java.util.List;
  4. import org.junit.Assert;
  5. import org.junit.Test;
  6. import org.junit.runner.RunWith;
  7. import org.mockito.Mockito;
  8. import org.powermock.api.mockito.PowerMockito;
  9. import org.powermock.core.classloader.annotations.PrepareForTest;
  10. import org.powermock.modules.junit4.PowerMockRunner;
  11. @RunWith(PowerMockRunner.class)
  12. @PrepareForTest({ BusinessUtil.class })
  13. public class BusinessServiceTest {
  14. @Test
  15. public void test() {
  16. List<String> expected = Arrays.asList("test", "test2");
  17. // Mock 静态方法
  18. PowerMockito.mockStatic(BusinessUtil.class);
  19. Mockito.when(BusinessUtil.getAllUser()).thenReturn(expected);
  20. // 调用测试方法
  21. BusinessService businessService = new BusinessService();
  22. List<String> users = businessService.getAllUser();
  23. // 验证
  24. Assert.assertArrayEquals(expected.toArray(), users.toArray());
  25. }
  26. }

– 更多参见:PowerMock 精萃
– 声 明:转载请注明出处
– Last Updated on 2019-08-16
– Written by ShangBo on 2019-08-16
– End

相关文章