1. 安装idea插件squaretest
插件安装完成后, Alt + Ins 快捷键可生成测试代码类
2. 多分支覆盖
欲覆盖多分支可使用.thenReturn().thenReturn()...
模式, 第n个thenReturn()就对应着第n次执行的返回值
另外, 如果写了3个thenReturn(), 而实际执行了5次, 那么第3/4/5次都会返回第3个thenReturn()的值,我们可依此特性简写, 后面相同的返回无须重复
注意: 谨慎确认变量是否正确设值, 因为变量都是拷贝的, 很容易写错, 特别是thenReturn()多的时候;
例如:
User user = new User();
user.setCareer("学生");
User user1 = new User();
user1.setCareer("老师");
User user2 = new User();
user2.setCareer("教授");
User user3 = new User();
user2.setCareer("院士");
User user4 = new User();
user4.setCareer("工程师");
User user5 = new User();
user5.setCareer("农民工");
如果不仔细, 很容易看漏user2重复设值了, 导致"教授"分支未覆盖
3. 接口参数快速适配
接口参数类型是多种多样的, 为快速适配, 我们应尽可能多地使用any*()
注意点:
- 如果实际传入null值, 须用any()来适配, 不然无法返回预设结果
- 如果参数类型是Collection, 那么anyList()和anySet()是不行的, 这样不会返回预设的结果集, 须使用anyCollection()
- 如果一个方法内的某个参数是any*(), 那么其它参数也必须是any*(); 例如
findByNameAndAge("baobao", anyInt())
是会报错的
4. 公共参数和公共返回值
- 公共参数可设为类变量,然后在
@Before
方法中初始化, 记得在测试方法下注释变量构成代码 - 公共返回值除了执行"查找->替换"操作之外, 也可以写在
@Before
方法中, 然后在测试方法下注释mock代码
网友评论