Changes between Initial Version and Version 1 of demo_01


Ignore:
Timestamp:
04/05/2012 12:04:15 PM (14 years ago)
Author:
chenyang
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • demo_01

    v1 v1  
     1 
     2== 单元测试应用示例——测试domain层对象 == 
     3推广来源系统中,设计了一个对象cn.com.pcgames.gamehall2.domain.TmpAdRequest,该对象是标准的java bean对象,该对象的作用是保存用户每次请求注册引导页的数所据信息,包括用户ip(ip),推广来源id(srcid),[[BR]] 
     4游戏id(gameid),创建时间(createAt),请求referer(referer). 
     5{{{ #!java 
     6        private String ip; 
     7        private long srcid; 
     8        private Date createAt; 
     9        private long gameid; 
     10         
     11        private String referer; 
     12 
     13        public String getReferer() { 
     14                return referer; 
     15        } 
     16         
     17        public void setReferer(String referer) { 
     18                this.referer = referer; 
     19        } 
     20         
     21        public String getIp() { 
     22                return ip; 
     23        } 
     24        public void setIp(String ip) { 
     25                this.ip = ip; 
     26        } 
     27         
     28        public long getSrcid() { 
     29                return srcid; 
     30        } 
     31        public void setSrcid(long srcid) { 
     32                this.srcid = srcid; 
     33        } 
     34        public Date getCreateAt() { 
     35                return createAt; 
     36        } 
     37        public void setCreateAt(Date createAt) { 
     38                this.createAt = createAt; 
     39        } 
     40         
     41        public long getGameid() { 
     42                return gameid; 
     43        } 
     44        public void setGameid(long gameid) { 
     45                this.gameid = gameid; 
     46        } 
     47}}} 
     48 
     49 
     50后台统计时,需要区分每次请求,是不是重复的请求,所以重写了该类的equals(),hashCode()方法 
     51{{{ #!java 
     52   @Override 
     53        public boolean equals(Object obj) { 
     54                if(obj == null){ 
     55                        return false; 
     56                } 
     57                if(obj instanceof TmpAdRequest){ 
     58                        TmpAdRequest adRequest = (TmpAdRequest)obj; 
     59                        EqualsBuilder equalsBuilder = new EqualsBuilder(); 
     60                        return equalsBuilder.append(this.ip, adRequest.getIp()).append(this.srcid, adRequest.getSrcid()).append(this.referer, adRequest.getReferer()).isEquals(); 
     61                         
     62                }else{ 
     63                        return false; 
     64                } 
     65        } 
     66        @Override 
     67        public int hashCode() { 
     68                HashCodeBuilder builder = new HashCodeBuilder(17,37); 
     69                return builder.append(this.srcid).append(this.ip).append(this.referer).toHashCode();  
     70        } 
     71 
     72}}} 
     73如何验证我们的重写的equals的正确性呢?我们书写单元测试来验证 
     74{{{ #!java 
     75public class TmpAdRequestTest { 
     76         
     77        @Test 
     78        public void equals() throws Exception { 
     79                 
     80                TmpAdRequest ad_request1 = new TmpAdRequest(); 
     81                ad_request1.setIp("192.168.20.92"); 
     82                ad_request1.setSrcid(1L); 
     83                ad_request1.setGameid(1); 
     84                 
     85                Date date = org.apache.commons.lang.time.DateUtils.parseDate("2011-12-12 23:23:23", new String[]{"yyyy-MM-dd HH:mm:ss"}); 
     86                ad_request1.setCreateAt(date); 
     87                 
     88                TmpAdRequest ad_request2 = new TmpAdRequest(); 
     89                ad_request2.setIp("192.168.20.92"); 
     90                ad_request2.setSrcid(1L); 
     91                ad_request2.setGameid(1); 
     92                ad_request2.setCreateAt(new Date()); 
     93                 
     94                List<TmpAdRequest> list = new ArrayList<TmpAdRequest>(); 
     95                 
     96                //ad_request1与ad_request2对象有相同的srcid,referer,ip,断言ad_request1.equals(ad_request2) 
     97                Assert.assertTrue(ad_request1.equals(ad_request2)); 
     98                 
     99                Assert.assertEquals(ad_request1, ad_request2); 
     100                 
     101                if(!list.contains(ad_request1)){ 
     102                        list.add(ad_request1); 
     103                } 
     104                 
     105                if(!list.contains(ad_request2)){ 
     106                        list.add(ad_request2); 
     107                } 
     108                 
     109               //将ad_request1与ad_request2加入同一个list以后,断言list.size() == 1 
     110                Assert.assertTrue(list.size() == 1); 
     111                 
     112                 
     113        } 
     114} 
     115}}}