Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何修复不同的参数!Junit和Mockito中的“通缉”错误_Java_Rest_Spring Boot_Junit_Mockito - Fatal编程技术网

Java 如何修复不同的参数!Junit和Mockito中的“通缉”错误

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

在执行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 你应使用:

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方法?请编辑并格式化您的答案,使其可读并更易于理解您的解决方案。请编辑并格式化您的答案,使其可读并更易于理解您的解决方案。