【问题标题】:Assertion Error - Junit testcase断言错误 - Junit 测试用例
【发布时间】:2014-02-06 13:31:34
【问题描述】:

我想使用 JUnuit 和 Mockito 测试以下方法。

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)

我无法理解这里出了什么问题。谁能帮忙。

【问题讨论】:

    标签: junit mockito assertion


    【解决方案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));
    }
    

    我在调用模拟对象方法时返回值时出错了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-01
      • 2019-11-15
      • 2016-02-13
      相关资源
      最近更新 更多