Argument(s) are different! Wanted:

本文介绍了解决使用Mockito时遇到的错误,重点在于如何正确重写equals()和hashCode()方法来确保对象比较的一致性。通过使用Apache Commons Lang3库简化了这一过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述:

用Mocktio时报错,很郁闷


看看明明是相等的,呵呵,你以为相等就相等,不用人的思维去思考电脑,对象相不相等取决于equals() 和 hashCode() 

如果你不重新这个两个方法,创建两个相同值的对象,其实也是不相等的。

现在去重写这个两个方法


package com.jack.data;

import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;

public class Spitter {

	private long l;
	private String firstName;
	private String lastName;
	private String username;
	private String password;
	
	public Spitter() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Spitter(String firstName, String lastName, String username, String password) {
		this.firstName = firstName;
		this.lastName = lastName;
		this.username = username;
		this.password = password;
	}
	public Spitter(long l, String firstName, String lastName, String username, String password) {
		this.l = l;
		this.firstName = firstName;
		this.lastName = lastName;
		this.username = username;
		this.password = password;
	}
	public String getFirstName() {
		return firstName;
	}
	public String getLastName() {
		return lastName;
	}
	public String getUsername() {
		return username;
	}
	public String getPassword() {
		return password;
	}
	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}
	public void setLastName(String lastName) {
		this.lastName = lastName;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public long getL() {
		return l;
	}
	public void setL(long l) {
		this.l = l;
	}
	
	@Override
	public boolean equals(Object obj) {
		
		return EqualsBuilder.reflectionEquals(this, obj, "firstName", "lastName");
	}
	@Override
	public int hashCode() {
		
		return HashCodeBuilder.reflectionHashCode(this, "firstName", "lastName");
	}
	@Override
	public String toString() {
		return "Spitter [l=" + l + ", firstName=" + firstName + ", lastName=" + lastName + ", username=" + username
				+ ", password=" + password + "]";
	}
	
	
	
}
总结:采用Apache的lang3进行重写这里两个方法,如果你不想自己写出现意想不到的情况,就引用jar包lang3
本文总结:

引用地址:

点击打开链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值