-1

好的,我需要一些帮助。我的 DAO 类中有这个方法,我需要对其进行测试:

public boolean saveOrUpdateUser(User user) {
    boolean res = false;
    try {
        this.getHibernateTemplate().saveOrUpdate(user);
        res = true;
    } catch (DataAccessException e) {
        res = false;
        this.logger.error("DataAccessException", e);
    }
    return res;
}

以下是我的测试方法:

   public void saveAndUpdateUserTest() {
              User user =new User ();
              user.setUserid(12);
              user.setFirstname("John");
              user.setLastname("Smith");

              assertEquals(12,user.getUser_id());
              assertEquals("John",user.getFirstname());
              assertEquals("Smith",user.getLastname());

       }

我需要在 saveAndUPdateUserTest 中以某种方式调用此方法,但我不知道要传递哪个参数!有人可以帮忙吗?

public boolean saveOrUpdateUser(User user) {..}

用户用户是什么意思?我有一个包含 set 和 get 方法的类 user.java。

提前致谢。我仍然是初学者,我需要建议和帮助如何继续。

4

3 回答 3

2

不是真正的答案,但无论您编写什么测试,代码都是错误的。Hibernate 抛出的异常是不可恢复的,因此你不应该捕获它们并假装什么都没发生。代码应该是

public void saveOrUpdateUser(User user) {
    this.getHibernateTemplate().saveOrUpdate(user);
}

或者,如果你真的想要日志:

public void saveOrUpdateUser(User user) {
    try {
        this.getHibernateTemplate().saveOrUpdate(user);
    } 
    catch (DataAccessException e) {
        this.logger.error("DataAccessException", e);
        throw e;
    }
}

另一个注意事项:记录HibernateTemplate为“您不应再使用此类”。对于 Hibernate 4,它甚至不再存在。

我同意评论。如果您不了解对象和方法参数,请先学习 Java 的基础知识。Spring 和 Hibernate 比基础高出许多层次,如果你不了解基本的 Java/编程概念,你就会碰壁。

于 2013-08-23T07:53:50.090 回答
0

您永远不应该像在代码中那样捕获异常。回到您的问题,请记住称为 AAA 的主要 TDD 模式 - 安排、行动、断言。

Arrange 是您初始化 SUT(被测系统)的地方 Act 是发生动作的地方(调用测试系统) Assert 是您检查结果的地方。

public void anyKindOfTest() {
   // arrange

   // act

   // assert
}

在你的情况下,

public void shouldStoreUser () {
  // arrange
  User user = new User ("John", "Smith");
  UserStorage userStorage = new UserStorage();

  // act
  userStorage.store(user);

  // assert
  assertNotNull(user.id);  
}
于 2013-08-23T08:12:42.273 回答
0
 public void saveAndUpdateUserTest() {

              //here is your variable of type User
              User user =new User ();
              user.setUserid(12);
              user.setFirstname("John");
              user.setLastname("Smith");

              assertEquals(12,user.getUser_id());
              assertEquals("John",user.getFirstname());
              assertEquals("Smith",user.getLastname());

              //you need to pass a variable with type User
              saveOrUpdateUser(user);

       }

将是一个很好的起点。

于 2013-08-23T07:46:05.167 回答