如何比较没有id的bean和使用id字段检索的bean?

时间:2014-03-31 12:06:51

标签: java spring spring-mvc junit assert

我在数据库中创建了一个新用户但是当我尝试与检索到的用户进行比较时,idUser是不同的。新的idUser为0,并且retreived是自动增量。 idUser是表的主键,也是自动增量。 用户名是唯一的。

JUnit代码测试

  @Test
  public void testCreateRetrieve() {
    userDao.create(user1);

    List<User> users = userDao.getAllUsers();

    assertEquals("One user should have been created and retrieved", 1, users.size());
    assertEquals("Inserted user should match user retreived", user1, users.get(0)); //They are not equal

    userDao.create(user2);
    userDao.create(user3);
    userDao.create(user4);

    assertEquals("Should be 4 inserted users", 4, users.size());
  }

错误

java.lang.AssertionError: Inserted user should match user retreived expected:
<User [idUser=0, aka=joe, username=josema, email=jose@javalabs.com, extension=, logInSession=null, logOutSession=null, blockedAccess=false, password=josema, passwordDate=null, computerName=, timestamp=null]> 
but was:
<User [idUser=19, aka=joe, username=josema, email=jose@javalabs.com, extension=, logInSession=null, logOutSession=null, blockedAccess=false, password=josema, passwordDate=null, computerName=, timestamp=2014-03-31 12:37:41.0]>

我如何进行测试?或者我如何检查用户是否相同? 唯一的方法是覆盖equals()和hashcode()方法吗?

1 个答案:

答案 0 :(得分:0)

您需要覆盖User类的equals()和hashCode()方法,以便在比较时不介意id。这是最好的方法。如果你真的不想覆盖它们,你可以断言属性是相同的(即名称,电子邮件等)