| Version 1 (modified by chenyang, 14 years ago) (diff) |
|---|
单元测试应用示例——测试domain层对象
推广来源系统中,设计了一个对象cn.com.pcgames.gamehall2.domain.TmpAdRequest?,该对象是标准的java bean对象,该对象的作用是保存用户每次请求注册引导页的数所据信息,包括用户ip(ip),推广来源id(srcid),
游戏id(gameid),创建时间(createAt),请求referer(referer).
private String ip;
private long srcid;
private Date createAt;
private long gameid;
private String referer;
public String getReferer() {
return referer;
}
public void setReferer(String referer) {
this.referer = referer;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public long getSrcid() {
return srcid;
}
public void setSrcid(long srcid) {
this.srcid = srcid;
}
public Date getCreateAt() {
return createAt;
}
public void setCreateAt(Date createAt) {
this.createAt = createAt;
}
public long getGameid() {
return gameid;
}
public void setGameid(long gameid) {
this.gameid = gameid;
}
后台统计时,需要区分每次请求,是不是重复的请求,所以重写了该类的equals(),hashCode()方法
@Override
public boolean equals(Object obj) {
if(obj == null){
return false;
}
if(obj instanceof TmpAdRequest){
TmpAdRequest adRequest = (TmpAdRequest)obj;
EqualsBuilder equalsBuilder = new EqualsBuilder();
return equalsBuilder.append(this.ip, adRequest.getIp()).append(this.srcid, adRequest.getSrcid()).append(this.referer, adRequest.getReferer()).isEquals();
}else{
return false;
}
}
@Override
public int hashCode() {
HashCodeBuilder builder = new HashCodeBuilder(17,37);
return builder.append(this.srcid).append(this.ip).append(this.referer).toHashCode();
}
如何验证我们的重写的equals的正确性呢?我们书写单元测试来验证
public class TmpAdRequestTest {
@Test
public void equals() throws Exception {
TmpAdRequest ad_request1 = new TmpAdRequest();
ad_request1.setIp("192.168.20.92");
ad_request1.setSrcid(1L);
ad_request1.setGameid(1);
Date date = org.apache.commons.lang.time.DateUtils.parseDate("2011-12-12 23:23:23", new String[]{"yyyy-MM-dd HH:mm:ss"});
ad_request1.setCreateAt(date);
TmpAdRequest ad_request2 = new TmpAdRequest();
ad_request2.setIp("192.168.20.92");
ad_request2.setSrcid(1L);
ad_request2.setGameid(1);
ad_request2.setCreateAt(new Date());
List<TmpAdRequest> list = new ArrayList<TmpAdRequest>();
//ad_request1与ad_request2对象有相同的srcid,referer,ip,断言ad_request1.equals(ad_request2)
Assert.assertTrue(ad_request1.equals(ad_request2));
Assert.assertEquals(ad_request1, ad_request2);
if(!list.contains(ad_request1)){
list.add(ad_request1);
}
if(!list.contains(ad_request2)){
list.add(ad_request2);
}
//将ad_request1与ad_request2加入同一个list以后,断言list.size() == 1
Assert.assertTrue(list.size() == 1);
}
}
![(please configure the [header_logo] section in trac.ini)](http://www1.pconline.com.cn/hr/2009/global/images/logo.gif)