@Test public void on_activate_clicked_should_enable_beacons_and_finish_activity_if_all_configurations_are_satisfied() { //PREPARE ConfigurationRequirementState satisfiedConfig1 = new ConfigurationRequirementStateBuilder() .withStatus(ConfigurationRequirementState.Status.SATISFIED) .build(); ConfigurationRequirementState satisfiedConfig2 = new ConfigurationRequirementStateBuilder() .withStatus(ConfigurationRequirementState.Status.SATISFIED) .build(); ConfigurationState configurationState = ConfigurationState.from(Arrays.asList(satisfiedConfig1, satisfiedConfig2)); when(configurationChecker.checkConfiguration()).thenReturn(just(configurationState2)); //RUN presenter.onActivateClicked(); //ASSERT verify(userSettings).enableBeacons(); verify(view).showBeaconsEnabled(); verify(view).finishActivity(); } @Override public void onActivateClicked() { subscribe(configurationChecker.checkConfiguration() .observeOn(AndroidSchedulers.mainThread()) .subscribeOn(AndroidSchedulers.mainThread()) .flatMap(configState -> Observable.from(configState.requirements())) .filter(requirementState -> requirementState.status() != ConfigurationRequirementState.Status.SATISFIED) .toList() .subscribe(notSatisfiedItems -> { <---- NULLPOINTER IN THIS LINE if(notSatisfiedItems.size() == 0) { enableBeaconsAndFinishActivity(); } else { userRequestedConfiguration = true; notSatisfiedConfigurationsCount = notSatisfiedItems.size(); requestConfigurationWithConfirmDialog(notSatisfiedItems.get(0)); } })); }