Проблема обработки исключений Mockito - PullRequest
1 голос
/ 21 сентября 2019

У меня есть следующий класс,

public class Processor {

    JobUpdate jobUpdate = new JobUpdate();

    public void process(Job job){
       try {
           doProcess(job);
       }catch (Exception e){
           handleError(job);
           System.out.println("This is error");
           throw e;  // Here throw Runtime Exception.
       }
    }

    private void handleError(Job job) {
        if (job.getFailure() > 0){
            jobUpdate.updateJobStatus(job, JobStatus.SUBMITTED);
        }else{
            jobUpdate.updateJobStatus(job, JobStatus.FAILED);
        }
    }

    private void doProcess(Job job){
        String name = job.getName();
        name += "added";
        // ....
    }
}

и мои тестовые примеры, как показано ниже,

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;

@ExtendWith(MockitoExtension.class)
public class ProcessTest {

    Processor processor = new Processor();

    @Mock
    private Job job;

    @Mock
    private JobUpdate jobUpdate;

    @Captor
    private ArgumentCaptor<Job> captorJob;

    @Captor
    private ArgumentCaptor<JobStatus> captorStatus;

    @Test
    public void shouldThrowException(){

        Mockito.when(job.getName()).thenThrow(RuntimeException.class);
        Mockito.when(job.getFailure()).thenReturn(2);
        processor.process(job);
        Mockito.verify(jobUpdate).updateJobStatus(captorJob.capture(),captorStatus.capture());
        assertThat(captorJob.getValue().getFailure(), equalTo( 2));
        assertThat(captorStatus.getValue(), equalTo( JobStatus.SUBMITTED));

    }
}

Поток идет нормально в блоке catch и после выполнения System.out.println («Это ошибка»);Скажите, это исключение.Контроллер не поддерживает тестовый класс для проверки моего ArgumentCaptor.

Я что-то упустил или мне нужно что-то изменить?

...