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

  實體類PasswordTicket代表一個重置口令的請求:

  @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接口定義了對用戶的相關操作:

 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是其實現(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事務綁定在Thread上,因此,實際的客戶端調(diào)用DAO組件時,還必須加入事務代碼:

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

  try {

  dao.xxx();

  tx.commit();

  }

  catch(Exception e) {

  tx.rollback();

  throw e;

  }

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