文章目录
前言
注:本文总结源自汪文君的e-book 《PowerMock 实战手册》, pdf不知道为何导入不了,以下是随书笔记。
pdf我保存在了百度云里,需要的可以自取
《PowerMock实战手册》
链接: 密码: 6hm4
本文目的:通过强大的 mock 编写出更好的测试用例,帮助实现 Free Bug
前提:具备 mockito 的语法基础,如果不懂,请移步:
mockito官网文档
mock 基本套路:
- 创建 mock 对象
- 模拟 mock 行为
- 调用待测试方法
- 验证 mock 行为(确认 mock 部分被成功模拟)
github文档
参考书籍:《Instant Mock Testing with PowerMock》
TDD框架我一般用Mockito,但是只要稍用一段时间就会发现它在实际项目中有很多解决不了的事情,因此出现了PowerMock,
专治各种不服【static / constructor / final / private / local variable】
补充:如果每次遇到这些代码都选择注释,测起来非常麻烦,还是尽量能嵌入项目中,运用更强大的 mock,但实际项目中很可能还没这么简单嵌入,之后实际工作中总结了经验再来补充。
另外,这些知识,看看就好,写点 demo,真正用到的时候再完整的来两遍,就会了,主要是会基本 demo,并且在工作测试的时候用到了能想到来这里查找和运用测试方法,让测试更简单。根据使用频率,决定自己相关需要使用的技术需要熟练到什么程度即可,大可把它们当做参考手册对待,不必牢记于心,网上用例一搜一大把。
依赖及注解
https://mvnrepository.com/
- powermock-module-junit4
- powermock-api-mockito
找到以上依赖(版本不一样可能会出现意想不到的问题),引入到本地的 pom 文件中
以下两个注解在测试 mockito 无法测试的内容时必须的,标注在待测试类上
@RunWith(PowerMockRunner.class)
告诉 junit 使用某个指定 Runner 运行 testCase ,不指定默认用 junit 的 Runner
@PrepareForTest(EmployeeService.class)
为 PowerMock 的 Runner 提前准备一个已经根据某种预期改变过的 class,如需添加更多,改成类似这种即可:@PrepareForTest({EmployeeService.class, EmployeeUtils.class})
mock local variable
- 有返回值
public class EmployeeService {
public int getTotalEmployee() {
EmployeeDao employeeDao = new EmployeeDao();
return employeeDao.getTotal