Junit报错:Argument(s) are different! Wanted:
本人个人博客网站,欢迎访问:学教府
- 在controller中的方法如下:
/*** 处理注册的提交信息* @param spitter* @return*/@RequestMapping(value = "/register", method = RequestMethod.POST)public String processRegister(Spitter spitter){spitterRepository.save(spitter);//跳转到个人信息页面return "redirect:/spitter/" + spitter.getUsername();}
- 在Junit类中的测试方法为:
@Testpublic void shouldProcessRegistration() throws Exception {SpitterRepository mockRepository = mock(SpitterRepository.class);Spitter unsaved = new Spitter("xu", "jiafei", "dale", "123456");Spitter saved = new Spitter(10L,"xu", "jiafei", "dale", "123456");//当调用保存方法时,返回指定的数据when(mockRepository.save(unsaved)).thenReturn(saved);SpitterController spitterController = new SpitterController(mockRepository);MockMvc mockMvc = standaloneSetup(spitterController).build();mockMvc.perform(post("/spitter/register").param("firstName","xu").param("lastName","jiafei").param("username","dale").param("password","123456")).andExpect(redirectedUrl("/spitter/dale"));//此处若不重写Spitter的Equals方法和hashCode方法时将会报错,说两次的参数传递不一样verify(mockRepository,atLeastOnce()).save(unsaved);}
- 如果在没有重写实体类Spitter的Equals方法和hashCode方法时, verify(mockRepository,atLeastOnce()).save(unsaved)方法会报错:
Argument(s) are different! Wanted:
spitterRepository.save(Spitter{id=null, firstName='xu', lastName='jiafei', username='dale', password='123456'}
);
-> at test.SpitterControllerTest.shouldProcessRegistration(SpitterControllerTest.java:57)
Actual invocation has different arguments:
spitterRepository.save(Spitter{id=null, firstName='xu', lastName='jiafei', username='dale', password='123456'}
);
-> at com.spittr.controller.SpitterController.processRegister(SpitterController.java:51)
结论:其实该验证方法的两次参数内容是一样的,之所以会报错是因为方法在比较时是使用的Equals方法和hashCode方法,而如果没重写这两个方法则使用的是Object的方法(判断是否为同一个对象)。如果要正确验证,需要重写这两个方法
Junit报错:Argument(s) are different! Wanted:相关推荐
- JUnit报错:Java.lang.Exception: No runnable methods解决方案
JUnit报错:Java.lang.Exception: No runnable methods解决方案 参考文章: (1)JUnit报错:Java.lang.Exception: No runnab ...
- java argument type mismatch_解决mybatisplus插入报错argument type mismatch的问题
今天使用argument type mismatch发现插入的时候报错 java.lang.IllegalArgumentException: argument type mismatch 从错误中看 ...
- 解决JUnit报错 java.lang.ExceptionNo tests found matching方法
问题截图 可能原因 忘记写@Test,导入相关的包 不是 public,参数,返回值,修饰符的错误. spring 包与 junit 的包的不兼容(springBoot项目直接忽略这一点) 没有保存报 ...
- 【JUnit 报错】 method initializationerror not found:JUnit4单元测试报错问题
今天是用JUnit测试一段代码,报错method initializationerror not found::出现如下问题: 双击这个就显示出现如下的错误: 查询网上,说是junit版本的问题: 那 ...
- mybatis报错:argument type mismatch
完整报错 当出现这个错误的时候先检查数据类型是否匹配,如果没问题的话往下看 nested exception is org.apache.ibatis.reflection.ReflectionExc ...
- mybatisplus插入报错argument type mismatch
今天使用argument type mismatch发现插入的时候报错java.lang.IllegalArgumentException: argument type mismatch. 从错误中看 ...
- Nodejs: Buffer报错argument must be an Array of Buffer or Uint8Array instances
最近项目有个需求需要在和第三方API接口进行交互时,在JSON字符串最前面加上16个字节的签名字节,为了简化问题忽略JSON以及16个字节的具体取值. 错误代码: buff = Buffer.from ...
- TASM报错argument needs type override的解决办法
参考博文 16位汇编编译报错和解决办法 https://blog.csdn.net/HGGshiwo/article/details/105464296 错误语句 cmp [bx], 8,不知道是1b ...
- 粗暴的rm rf,报错Argument list too long
今天有遇到一个问题,需要删除某目录下堆积的大量的无用文件. 自信的进入目录,敲打进了 rm -rf * 自信的等待结果的时候,报错了 Error – /bin/rm: Argument list to ...
最新文章
- 盖茨基金会:如何使用Python拯救生命
- 强烈推荐8个值得下载的神仙软件,每一个都让人惊喜
- spring in action 4 第5章
- linux uname 命令详解
- js弹性运动滑动的菜单
- kylin分析引擎:运行原理、维度和Cube等名词解释、核心算法
- 中缀表达式计算、后缀表达式计算、中缀转后缀
- 《弗洛伊德及其后继者》读书笔记(part1)--西格蒙德·弗洛伊德与经典精神分析传统
- 583. 两个字符串的删除操作
- 2011年计算机一级考试题,2011年计算机一级考试模拟试题及参考答案(1)
- php 可编辑菜单,菜单的添加编辑
- 【编程题】判断一个整数对应的二进制数是否是回文
- 服务器硬件工程师从入门到精通_硬件工程师必阅--如何“0基础”从入门到精通?(附CAD使用指南)...
- 微信小程序云开发教程-WXML入门-条件渲染
- ffplay播放器原理剖析
- [日志]中国十大名花
- EFM32 LG232系列单片机干货之LEUART
- python在tk界面播放本地视频_如何使用python3在tkinter窗口中插入视频播放器?
- 控制进度-监控管理过程组
- python 热度图_keras CNN卷积核可视化,热度图教程