Получение NPE при издевательстве над интерфейсами в процедуре приемочных испытаний - PullRequest
0 голосов
/ 01 октября 2019

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

Я хотел бы объяснить с помощью кода, который я написал


public interface NxRegister {
   public <S> Optional<S> requestAny(Class<S> service, NxToken token);
}

public interface NxrScheduler {
   public String registrator(String str1, String str2,String str3, String str4, String str5, InputStream content) throws Exception;
}

реализация

public final void scheduleImport(
         InputStream inputStream) {
      try {
        //Getting NPE at this line
    Optional<NxrScheduler> optional = nxRegister.requestAny(NxrScheduler.class, WebToken.create());
            assert !optional.isPresent() : "Could not find NxScheduler service in registrary";
            NxrScheduler nxScheduler = optional.get();

      }catch (Exception e) {
        e.printStackTrace();
      }
   }

ATP с Mock

@Test @Integration public void runScheduleImport() throws Exception {

      //Mock NxScheduler service
      Optional<NxrScheduler> optNxrScheduler = Optional.of(Mockito.mock(NxrScheduler.class));
      NxrScheduler mockNxScheduler = optNxrScheduler.get();

      NxRegister mockNxRegister = Mockito.mock(NxRegister.class);
      Mockito.when(mockNxRegister.requestAny(NxrScheduler.class, 
         WebToken.create())).thenReturn(optNxrScheduler);

     String inputData = "Executing runScheduleImportat time = "
            + new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss").format(new 
                java.util.Date());
      InputStream inputStream = new ByteArrayInputStream(inputData.getBytes());

      //calling scheduleImport
      sceduleImport(inputStream);

}```
...