== 单元测试应用示例——测试domain层对象 == 推广来源系统中,设计了一个对象cn.com.pcgames.gamehall2.domain.TmpAdRequest,该对象是标准的java bean对象,该对象的作用是保存用户每次请求注册引导页的数所据信息,包括用户ip(ip),推广来源id(srcid),[[BR]] 游戏id(gameid),创建时间(createAt),请求referer(referer). {{{ #!java 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()方法 {{{ #!java @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的正确性呢?我们书写单元测试来验证 {{{ #!java 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 list = new ArrayList(); //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); } } }}}