Вы не выполняете модульный тест , если ожидаете запуска ErrorController путем вызова метода в MyController.Это интеграционный тест, и вам не нужно его делать.
Если вы описываете свой тест следующим образом: «Я хочу видеть, что исключение из класса MyController попадает в класс ErrorController», тогда выне тестировать ни класс MyController, ни класс ErrorController;вместо этого вы проверяете, что Spring работает. Вам не нужно проверять, что Spring работает. Авторы Spring тестируют, чтобы увидеть, что Spring работает.
Если вы хотите проверить, что аннотация вErrorController является корректным, так что Spring определяет его как класс ErrorController как контроллер ошибок, и вы находитесь на правильном пути.Это все еще интеграционный тест , а не модульный тест.
Чтобы выполнить модульное тестирование класса ErrorController, просто создайте экземпляр класса ErrorController в модульном тесте и вызовите методы.Вы можете использовать отражение в модульном тесте, чтобы убедиться, что аннотации «кажутся вам правильными».Вот простой пример модульного теста ErrorController.
public TestErrorController
{
private ErrorController classToTest;
@Mock
private HttpServletRequest mockHttpServletRequest;
private
@Before
public void beforeTest()
{
MockitoAnnotations.initMocks(this);
classToTest = new ErrorController();
}
@Test
public void handleError_allGood_success()
{
private ResponseEntity<List<Error>> actualResult;
// mock the desired mockHttpServletRequest functionality.
doReturn(something).when(mockHttpServletRequest).someMethod();
// Perform the test.
actualResult = classToTest.handleError(mockHttpServletRequest);
// Do asserts on the actualResult here.
}
}