2015-04-02 4 views
0

Я использую Junit с Mockito. Я хочу проверить EntityManager, я получаю java.lang.NullPointerExceptionTest EntityManager с помощью JUnit Mockito

Ниже является то, что я попробовал, основной метод класса,

@Override 
    public ReplicationPerspective buildReplicationPerspective(final String replicationDomain) 
     throws ReplicationStateException { 
     try { 
      System.out.println("Test"); 
      final ReplicationPerspective localPerspective = 
       this.replicationPerspectiveQuery.findReplicationPerspective(replicationDomain); 

      List<String> ncdKeys = new ArrayList<String>(); 
      for (NodeChangeDelta ncd : this.nodeChangeDeltaQuery.findByChangeStatus(
       replicationDomain, ChangeStatus.PENDING)) { 
       ncdKeys.add(ncd.getKey()); 
      } 
      localPerspective.setPendingNodeChangeDeltaKeys(ncdKeys); 

      LOGGER.debug("Local perspective is {} ", localPerspective); 
      return localPerspective; 
     } 
     catch (Throwable t) { 
      LOGGER.error("Failed to build replication perspective", t); 
      throw new ReplicationStateException(t); 
     } 
    } 
метод файл

replicationPerspectiveQuery Бин,

@PersistenceContext 
    private EntityManager em; 

@Override 
    public ReplicationPerspective findReplicationPerspective(final String replicationDomain) { 
     Validate.notBlank(replicationDomain); 

     ReplicationPerspective perspective = 
      this.em.find(ReplicationPerspective.class, replicationDomain); 
     if (perspective == null) { 
      this.replicationPerspectiveInitializer 
       .initializeReplicationPerspective(replicationDomain); 
      perspective = this.em.find(ReplicationPerspective.class, replicationDomain); 
     } 

     return perspective; 
    } 

И мой метод испытания случай,

@Test 
    public void testBuildReplicationPerspective() throws ReplicationStateException { 
      this.replicationStateServiceBean = 
       new ReplicationStateServiceBean(null, null, null, null, 
        new ReplicationPerspectiveQueryBean(), null, null); 

      this.em = Mockito.mock(EntityManager.class); 
      Mockito.when(this.em.find(ReplicationPerspective.class, REPLICATION_DOMAIN)) 
       .thenReturn(null); 

      this.replicationStateServiceBean.buildReplicationPerspective(REPLICATION_DOMAIN); 
    } 

Я получаю ошибку NPE в replicationPerspectiveQuery Bean файл в строке ниже

ReplicationPerspective perspective = 
      this.em.find(ReplicationPerspective.class, replicationDomain); 

Как проверить менеджер сущности, помочь мне решить.

Я также пытался издеваться, как показано ниже, но не работает,

Mockito.when(this.replicationPerspectiveQuery.findReplicationPerspective(REPLICATION_DOMAIN)).thenReturn(null); 

ответ

0

Вы не хватает инструкции, чтобы иметь Mockito сделать фактическую инъекцию. Прямо сейчас у вас есть EntityManager, издевательский, но он нигде не используется.

Вы можете объявить свой компонент в качестве члена тестового класса и аннотировать его с помощью @InjectMocks, чтобы Mockito выполнил проводку для вас.

См. Также the documentation для получения дополнительной информации и примеров.

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