2016-03-22 15 views
1

Ich habe eine Methode, die ich versuche, mit Mockito zu testen. Unten ist die Methode, die ich versuche zu testen. Ich erhalte eine Nullzeiger-Ausnahme, wenn ich meinen Test ausführe. Ich spotte Root, aber bei accountEntity.get bekomme ich null Zeiger. Was fehlt mir hier?Kriterien Abfrage Mockito Unit Test - NullPointerException

 public List<AccountEntity> createCriteriaQuery(final List<String> accountIdList, 
        final MultiValueMap<String, String> allRequestParams) { 

       final CriteriaBuilder cb = entityManager.getCriteriaBuilder();   
       final CriteriaQuery<AccountEntity> cq = cb.createQuery(AccountEntity.class); 
       final Root<AccountEntity> accountEntity = cq.from(AccountEntity.class); 

       final Join<AccountEntity, PlanEntity> account = accountEntity.join(AccountEntity_.planEntity); 

       final List<Predicate> predicates = new ArrayList<Predicate>(); 

     //Getting null pointer at the below call.   

**predicates.add(accountEntity.get(AccountEntity_.id).in(accountIdList));** 

    /*remaining code here/ 

unten ist mein Test.

@InjectMocks 
private AccountsDAO       accountsDao; 
@Mock 
EntityManagerFactory      entityManagerFactory; 
@Mock 
EntityManager        entityManager; 
@Mock 
CriteriaBuilder        cb; 
@Mock 
CriteriaQuery<AccountEntity>    cq; 
@Mock 
Root<AccountEntity>       rootAccountEntity; 
    @Test 
     public void canGetAllAccountsInfo() { 
     when(entityManagerFactory.createEntityManager()).thenReturn(entityManager); 
     when(entityManager.getCriteriaBuilder()).thenReturn(cb); when(cb.createQuery(AccountEntity.class)).thenReturn(cq); 
     when(cq.from(AccountEntity.class)).thenReturn(rootAccountEntity); 
//Null pointer in the actual method call 
      accountEntityList = accountsDao.createCriteriaQuery(accounIdList, allRequestParams);   
      } 

Antwort

0

Mir fehlte diese Aussage

when(accountEntity.get(AccountEntity_.id)).thenReturn(path); 

Ich habe diese in der Testklasse

@Mock 
    Path<String>     path; 

Im eigentlichen Code für diese

predicates.add(accountEntity.get(AccountEntity_.id).in(accountIdList)) 

ich diesen

müssen passieren
when(accountEntity.get(AccountEntity_.id)).thenReturn(path); 
1

Ich würde vermuten, dass accountEntity.get(AccountEntity_.id) zu null löst, da Sie nicht when(...).thenReturn(...) für das verspottete accountEntity Objekt im Spiel hinzugefügt haben.

+0

Ich habe das versucht, immer noch das gleiche Problem. – Arun

Verwandte Themen