首页>新闻>太原达内线上Java课程

太原达内线上Java课程

来源:太原达内IT教育学校

时间:2021/5/6 16:18:42

太原达内线上Java课程,小编在这里为大家推荐太原达内IT培训,17年专业IT培训机构,美国上市集团,开设IT培训班Java、python、大数据、linux、UI、会计等IT培训,覆盖IT培训和非IT培训共24大课程。达内集团凭借雄厚的技术研发实力、过硬的教学质量、成熟的就业服务团队,为学员提供强大的职业竞争力,在用人企业中树立了良好的口碑。欢迎大家的在线咨询,0元试听,随到随学,推荐就业。接下来小编为您分享,Java单元测试技巧之PowerMock


调用真实方法


public class ListTest {


   @Test


   public void testGet() {


       int index = 0;


       Integer expected = 100;


       List<Integer> oldList = new ArrayList<>();


       oldList.add(expected);


       List<Integer> spylist = PowerMockito.spy(oldList);


       PowerMockito.doCallRealMethod().when(spylist).get(index);


       Integer actual = spylist.get(index);


       Assert.assertEquals("返回值不相等", expected, actual);


   }


}


3  两种模式的主要区别


两种模式都用于模拟对象方法,在mock实例下使用时,基本上是没有差别的。但是,在spy实例下使用时,when().thenReturn()模式会执行原方法,而doReturn().when()模式不会执行原方法。


测试服务类


@Slf4j


@Service


public class UserService {


   public long getUserCount() {


       log.info("调用获取用户数量方法");


       return 0L;


   }


}


使用when().thenReturn()模式


@RunWith(PowerMockRunner.class)


public class UserServiceTest {


   @Test


   public void testGetUserCount() {


       Long expected = 1000L;


       UserService userService = PowerMockito.spy(new UserService());


       PowerMockito.when(userService.getUserCount()).thenReturn(expected);


       Long actual = userService.getUserCount();


       Assert.assertEquals("返回值不相等", expected, actual);


   }


}


在测试过程中,将会打印出"调用获取用户数量方法"日志。


使用doReturn().when()模式


@RunWith(PowerMockRunner.class)


public class UserServiceTest {


   @Test


   public void testGetUserCount() {


       Long expected = 1000L;


       UserService userService = PowerMockito.spy(new UserService());


       PowerMockito.doReturn(expected).when(userService).getUserCount();


       Long actual = userService.getUserCount();


       Assert.assertEquals("返回值不相等", expected, actual);


   }


}


在测试过程中,不会打印出"调用获取用户数量方法"日志。


4  whenNew模拟构造方法


声明:


PowerMockito.whenNew(MockClass.class).withNoArguments().thenReturn(expectedObject);


PowerMockito.whenNew(MockClass.class).withArguments(someArgs).thenReturn(expectedObject);


用途:用于模拟构造方法。


案例:


public final class FileUtils {


   public static boolean isFile(String fileName) {


       return new File(fileName).isFile();


   }


}


@RunWith(PowerMockRunner.class)


@PrepareForTest({FileUtils.class})


public class FileUtilsTest {


   @Test


   public void testIsFile() throws Exception {


       String fileName = "test.txt";


       File file = PowerMockito.mock(File.class);


       PowerMockito.whenNew(File.class).withArguments(fileName).thenReturn(file);


       PowerMockito.when(file.isFile()).thenReturn(true);


       Assert.assertTrue("返回值为假", FileUtils.isFile(fileName));


   }


}


注意:需要加上注解@PrepareForTest({FileUtils.class}),否则模拟方法不生效。


五  参数匹配器


在执行单元测试时,有时候并不关心传入的参数的值,可以使用参数匹配器。


1  参数匹配器(any)


Mockito提供Mockito.anyInt()、Mockito.anyString、Mockito.any(Class<T> clazz)等来表示任意值。


public class ListTest {


   @Test


   public void testGet() {


       int index = 1;


       Integer expected = 100;


       List<Integer> mockList = PowerMockito.mock(List.class);


       PowerMockito.when(mockList.get(Mockito.anyInt())).thenReturn(expected);


       Integer actual = mockList.get(index);


       Assert.assertEquals("返回值不相等", expected, actual);


   }


}

温馨提示:为了不影响您的时间,来校区前或者遇到不明白的问题请先电话咨询,方便我校安排相关课程的专业老师为您解答,选取适合您的课程。以上是太原达内教育的小编为您分享的关于Java单元测试技巧之PowerMock的内容,希望可以为同学们提供帮助,更多Java资讯请持续关注太原达内教育。

  • 上一篇:太原软件测试去哪个培训学校好
  • 下一篇:太原靠谱的Java培训机构怎么选
  • 相关推荐 更多>

    太原精选几大Java培训机构人气...

    太原十大UI设计师培训机构今日重...

    太原python培训机构哪家值得...

    太原python培训中心哪个好

    太原UI设计培训机构哪家好

    太原web基础差学习课程哪好

    预约体验课

    版权所有:搜学搜课(www.soxsok.com)

  • 在线咨询
  • 电话咨询
  • 预约试听

  • ;