Java 如何修复不同的参数!Junit和Mockito中的“通缉”错误
在执行JUnit测试用例时,涉及到包含verify.save方法的方法,我得到以下错误参数是不同的!通缉犯 @试验 公共无效检查更正尝试测试{ 乘法=新乘法50,60; 用户=新用户ABC; 乘法结果试探尝试=新乘法结果试探用户,乘法,3000,false; 乘法结果尝试验证尝试=新乘法结果尝试用户,乘法,3000,真; whenuserRepository.findByAliasabc.ThenReturn可选.empty; 布尔attemptResult=multipliationServiceImpl.CheckAttemptTest; AttemptResult.isTrue的资产; verifyattemptRepository.saveverifiedAttempt; } 我收到以下错误消息 争论是不同的!通缉: attemptRepository.save 乘法结果试探[user=user[alias=abc],乘法=乘法[factorA=50,factorB=60],结果试探=3000,correct=true] ; ->在microservices.book.multiplication.service.MultiplicationServiceImplTest.checkCorrectAttemptTestMultiplicationServiceImplTest.java:60 实际调用有不同的参数: attemptRepository.save 乘法结果试探[user=user[alias=abc],乘法=乘法[factorA=50,factorB=60],结果试探=3000,correct=true] ; ->在microservices.book.multiplication.service.MultiplicationServiceImpl.checkAttemptMultiplicationServiceImpl.java:58 在microservices.book.multiplication.service.MultiplicationServiceImplTest.checkCorrectAttemptTestMultiplicationServiceImplTest.java:60 你应使用:Java 如何修复不同的参数!Junit和Mockito中的“通缉”错误,java,rest,spring-boot,junit,mockito,Java,Rest,Spring Boot,Junit,Mockito,在执行JUnit测试用例时,涉及到包含verify.save方法的方法,我得到以下错误参数是不同的!通缉犯 @试验 公共无效检查更正尝试测试{ 乘法=新乘法50,60; 用户=新用户ABC; 乘法结果试探尝试=新乘法结果试探用户,乘法,3000,false; 乘法结果尝试验证尝试=新乘法结果尝试用户,乘法,3000,真; whenuserRepository.findByAliasabc.ThenReturn可选.empty; 布尔attemptResult=multipliationServi
verify(attemptRepository).save(Matchers.refEq(verifiedAttempt));
我怀疑MultiplicationResultAttent没有在对象的字段上实现基于相等的相等,因此当Mockito验证属性时,它并不等于您提供的对象,尽管所有字段都具有相同的值
Matcher.refEq。。。使用反射来确定值是否相同
编辑
正如@farhanlq指出的Matchers.refEq。。已弃用,ArgumentMatchers.refEq。。。应改为使用。您应使用:
verify(attemptRepository).save(Matchers.refEq(verifiedAttempt));
我怀疑MultiplicationResultAttent没有在对象的字段上实现基于相等的相等,因此当Mockito验证属性时,它并不等于您提供的对象,尽管所有字段都具有相同的值
Matcher.refEq。。。使用反射来确定值是否相同
编辑
正如@farhanlq指出的Matchers.refEq。。已弃用,ArgumentMatchers.refEq。。。应该改为使用。我在乘法结果尝试中实现了equals和hashcode,它成功了 我在乘法结果尝试中实现了equals和hashcode,它成功了 谢谢,这很有效。但Matchers不受欢迎。还有其他替代品吗?是的,它们已经被弃用了。很抱歉您可以使用ArgumentMatchers.refEq。。。相反,是的,你是对的。我没有在乘法结果尝试中实现equals方法。谢谢。当我添加事件处理时,上面的代码片段不起作用。它给出了同样的错误。现在我重写了equals和hashcode方法,它工作得很好。有没有其他方法可以摆脱重写equals和hashcode方法?谢谢,这很有效。但Matchers不受欢迎。还有其他替代品吗?是的,它们已经被弃用了。很抱歉您可以使用ArgumentMatchers.refEq。。。相反,是的,你是对的。我没有在乘法结果尝试中实现equals方法。谢谢。当我添加事件处理时,上面的代码片段不起作用。它给出了同样的错误。现在我重写了equals和hashcode方法,它工作得很好。是否有其他方法可以摆脱重写equals和hashcode方法?请编辑并格式化您的答案,使其可读并更易于理解您的解决方案。请编辑并格式化您的答案,使其可读并更易于理解您的解决方案。