2014-03-31 24 views
0

我已经在数据库中创建了一个新用户,但是当我尝试与检索到的用户idUser进行比较时,它与此不同。新的idUser是0,retreived是自动增量。 idUser是表的主键和自动增量。 用户名是唯一的。如何比较没有id的bean和检索到的id字段?

的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 protected], extension=, logInSession=null, logOutSession=null, blockedAccess=false, password=josema, passwordDate=null, computerName=, timestamp=null]> 
but was: 
<User [idUser=19, aka=joe, username=josema, [email protected], extension=, logInSession=null, logOutSession=null, blockedAccess=false, password=josema, passwordDate=null, computerName=, timestamp=2014-03-31 12:37:41.0]> 

我怎么会做测试?或者我如何检查用户是否一样? 是否只有这样才能重写equals()和hashcode()方法?

+0

请张贴您的用户实体与它的映射 – gadget

回答

0

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