mokito 快速补充Java单元测试的技巧

2023-03-05  本文已影响0人  饱饱想要的灵感

1. 安装idea插件squaretest

插件安装完成后, Alt + Ins 快捷键可生成测试代码类

squaretest插件使用.png

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*()
注意点:

  1. 如果实际传入null值, 须用any()来适配, 不然无法返回预设结果
  2. 如果参数类型是Collection, 那么anyList()anySet()是不行的, 这样不会返回预设的结果集, 须使用anyCollection()
  3. 如果一个方法内的某个参数是any*(), 那么其它参数也必须是any*(); 例如findByNameAndAge("baobao", anyInt())是会报错的

4. 公共参数和公共返回值

上一篇 下一篇

猜你喜欢

热点阅读