2014-12-24 4 views
-2

Я смущен, почему я получаю исключение классаCastException.confused почему получение 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()' return? –

+0

@PredragMaric обновленный в вопросе – BlueShark

+2

Вы обновили 'findRoleByRoleNameTenant()', до сих пор нет кода для 'getRolesByRoleNameTenant()'. –

ответ

1
  1. Вы сказали, что getRolesByRoleNameTenant возвращает Role

  2. Вы сказали, что исключение происходит на

    roleList = (List<Role>) roleFunctionService.getRolesByRoleNameTenant(...)); 
    
  3. Исключение класса литая говорит вам, что вы не можете бросить Role к List<Role>.

В принципе, либо ваш метод findRoleByRoleNameTenant глючит, или декларация getRolesByRoleNameTenant неверна. В любом случае, вы пытаетесь сделать класс, который не будет работать и не сможет работать.

+0

хорошо, я не написал. просто получил ответ на единичный тест. я сообщу кому-нибудь, – BlueShark

Смежные вопросы