2014-12-24 25 views
-2

我很困惑,爲什麼我得到一個classCastException。混淆爲什麼得到classCastException當junit測試

這裏是我的代碼:

public RolesResponse findRoleByRoleNameTenant(RolesRequest rolesRequest) 
    { 
     RolesResponse rolesResponse = new RolesResponse(); 
     List<Role> roleList = null; 
     if (StringUtils.isNotBlank(rolesRequest.getTenantCode()) && null != rolesRequest.getRoleName()) 
     { 
      roleList = (List<Role>) roleFunctionService.getRolesByRoleNameTenant(rolesRequest.getRoleName().toString(), rolesRequest.getTenantCode()); 

     } 
     if (CollectionUtils.isNotEmpty(roleList)) 
     { 

      rolesResponse.setRoles(roleList); 
     } 
     else 
     { 

      rolesResponse.setError(LayerContextHolder.getErrorObject()); 
     } 

     return rolesResponse; 
    } 

這裏是測試:

@Test 
    public void findRoleByRoleNameTenantTest() 
    { 
     RolesRequest rolesRequest = new RolesRequest(); 

     rolesRequest.setTenantCode("test"); 
     rolesRequest.setRoleName(RoleName.ADMINATOS); 

     RolesResponse rolesResponse = rolesProcessService.findRoleByRoleNameTenant(rolesRequest); 
     //Assert.assertNull(rolesResponse.getError()); 
    } 

和運行JUnit測試我得到ClassCastException異常:不能轉換爲java.util.List的

並特別突出顯示此線

roleList = (List<Role>) roleFunctionService.getRolesByRoleNameTenant(rolesRequest.getRoleName().toString(), rolesRequest.getTenantCode()); 
+2

'roleFunctionService.getRolesByRoleNameTenant()'返回什麼? –

+0

@PredragMaric更新了問題 – BlueShark

+2

您已更新'findRoleByRoleNameTenant()',仍然沒有'getRolesByRoleNameTenant()'的代碼。 –

回答

1
  1. 你說getRolesByRoleNameTenant返回Role

  2. 你說,出現異常的

    roleList = (List<Role>) roleFunctionService.getRolesByRoleNameTenant(...)); 
    
  3. 類轉換異常是在告訴你,你可以不投一個RoleList<Role>

基本上,無論你findRoleByRoleNameTenant方法是越野車,或getRolesByRoleNameTenant的聲明是不正確。無論哪種方式,你都試圖做一個不會也不行的班級演員。

+0

好吧,我沒有寫。剛剛被告知單元測試。我會通知某人thakns – BlueShark

相關問題