1. 
        
        您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源單元測(cè)試工具 >
        對(duì)DAO編寫單元測(cè)試
        作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/2/19 15:12:51 ] 推薦標(biāo)簽:

          實(shí)體類PasswordTicket代表一個(gè)重置口令的請(qǐng)求:

          @Entity

          @Table(name="T_PWDT")

          public class PasswordTicket {

          private String id;

          private User user;

          private String ticket;

          private long createdDate;
          @Id

          @Column(nullable=false, updatable=false,  length=32)

          @GeneratedValue(generator="system-uuid")

          @GenericGenerator(name="system-uuid",  strategy="uuid")

          public String getId() {  return id; }

          protected void  setId(String id) { this.id = id; }
          @ManyToOne

          @JoinColumn(nullable=false, updatable=false)

          public User getUser() {  return user; }

          public void setUser(User  user) { this.user = user; }
          @Column(nullable=false,  updatable=false, length=32)

          public String getTicket()  { return ticket; }

          public void  setTicket(String ticket) { this.ticket = ticket; }
          @Column(nullable=false,  updatable=false)

          public long  getCreatedDate() { return createdDate; }

          public void  setCreatedDate(long createdDate) { this.createdDate = createdDate; }

          }
         

          UserDao接口定義了對(duì)用戶的相關(guān)操作:

         public interface UserDao {

          User  queryForSignOn(String username);

          User queryUser(String  username);

          void createUser(User  user);

          void updateUser(User  user);

          boolean  updateEmailValidation(String username, int ticket);

          String  createPasswordTicket(User user);

          boolean  updatePassword(String username, String oldPassword, String newPassword);

          boolean  queryResetPassword(User user, String ticket);

          boolean  updateResetPassword(User user, String ticket, String password);

          void updateLock(User  user, long lockTime);

          void updateUnlock(User  user);

          }
         

          UserDaoImpl是其實(shí)現(xiàn)類:

         public class UserDaoImpl implements UserDao {

          public User  queryForSignOn(String username) {

          User user =  queryUser(username);

          if(user.getLocked())

          throw new  LockException(user.getLockDate());

          return user;

          }
         public User  queryUser(String username) {

          return (User)  HibernateUtil.query(User.class, username);

          }
         public void  createUser(User user) {

          user.setEmailValidation((int)(Math.random() * 1000000) + 0xf);

          HibernateUtil.createEntity(user);

          }

          // 其余方法略

          ...

          }
         

          由于將Hibernate事務(wù)綁定在Thread上,因此,實(shí)際的客戶端調(diào)用DAO組件時(shí),還必須加入事務(wù)代碼:

         Transaction tx =  HibernateUtil.getCurrentSession().beginTransaction();

          try {

          dao.xxx();

          tx.commit();

          }

          catch(Exception e) {

          tx.rollback();

          throw e;

          }

        上一頁1234下一頁
        軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
        滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd