2014-02-06 76 views
1

我有以下使用JUnuit和Mockito測試的方法。聲明錯誤 - Junit測試用例

public Map<String, String> getUserACLDetails(final int userId, final int networkId, final List<String> privilegeNames) 
{ 
    final Map<String, String> privilegeNameValue = new HashMap<>(); 
    final Object aclDataString = cbClient.get(String.valueOf(userId)); 
    Map<String, String> aclData = null; 

    if (null != aclDataString && !aclDataString.equals(NULL)) 
    { 
     aclData = gson.fromJson(aclDataString.toString(), new HashMap<String, String>().getClass()); 
    } 

    for (String privilegeName : privilegeNames) 
    { 
     String innerMapKey = String.valueOf(networkId) + UNDER_SCORE + privilegeName; 

     if (aclData.containsKey(innerMapKey)) 
     { 
      privilegeNameValue.put(privilegeName, aclData.get(innerMapKey)); 
     } 
    } 
    return privilegeNameValue; 
} 

以下是測試用例 -

public void getUserACLDetailsWithReturnValueTest() 
{ 
    final int userId = 123; 
    final int networkId = 525; 
    List<String> privilegeNames = new ArrayList<>(); 
    String privilegeName = "PRIVILEGE_ACCESS_VIEW"; 
    String privilegeValue = "true"; 
    privilegeNames.add(privilegeName); 
    Map<String, String> privilegeNameValues = new HashMap<>(); 
    privilegeNameValues.put(privilegeName,privilegeValue); 
    Map<String, String> aclData = new HashMap<>(); 
    aclData.put(String.valueOf(networkId) + "_" + privilegeName, privilegeValue); 
    privilegeName = "PRIVILEGE_ACCESS_EDIT"; 
    privilegeValue = "false"; 
    aclData.put(String.valueOf(networkId) + "_" + privilegeName, privilegeValue); 
    Mockito.when(couchbaseClient.get(String.valueOf(userId))).thenReturn(aclData); 
    assertEquals(privilegeNameValues, userAclDao.getUserACLDetails(userId, networkId, privilegeNames)); 
} 

但是,當我執行測試用例我碰到下面的錯誤 -

java.lang.AssertionError: expected: java.util.HashMap<{PRIVILEGE_CREATIVE_ACCESS_VIEW=true}> but was: java.util.HashMap<{PRIVILEGE_CREATIVE_ACCESS_VIEW=true}> 
at org.junit.Assert.fail(Assert.java:93) 
at org.junit.Assert.failNotEquals(Assert.java:647) 
at org.junit.Assert.assertEquals(Assert.java:128) 
at org.junit.Assert.assertEquals(Assert.java:147) 
at com.zedo.nirvana.hriday.authorization.UserAclDaoCouchbaseImplTest.getUserACLDetailsWithReturnValueTest(UserAclDaoCouchbaseImplTest.java:153) 

我無法理解到底是怎麼回事錯在這裏。任何人都可以幫忙

回答

1

下面是正確的測試用例 -

public void getUserACLDetailsWithReturnValueTest() { 
    final int userId = 123; 
    final int networkId = 525; 
    List<String> privilegeNames = new ArrayList<>(); 
    String privilegeName = "PRIVILEGE_CREATIVE_ACCESS_VIEW"; 
    String privilegeValue = "true"; 
    privilegeNames.add(privilegeName); 
    final Object aclDataString = "{\"525" + "_" + privilegeName + "\": \"" + privilegeValue + "\"}"; 
    Map<String, String> privilegeNameValues = new HashMap<>(); 
    privilegeNameValues.put(privilegeName, privilegeValue); 
    Mockito.when(couchbaseClient.get(String.valueOf(userId))).thenReturn(aclDataString); 
    assertEquals(privilegeNameValues, userAclDao.getUserACLDetails(userId, networkId, privilegeNames)); 
} 

而返回值當嘲笑對象的方法被稱爲我犯了一個錯誤。