У меня были некоторые модульные тесты для слоя DAO приложения Spring 4 MVC. Затем я добавил Spring Security к определенным методам в моих контроллерах, и DAO они используют.Как я могу протестировать метод DAO Spring 4 с функцией Spring Security?
Я выяснил, как сделать аннотацию @WithMockUser в тестах контроллера, но я был в тупике на тестах DAO. Исключение я получаю на каждом тесте дао является:
java.lang.IllegalStateException: Failed to load ApplicationContext
....
Caused by: java.lang.IllegalArgumentException: An AuthenticationManager is required
У меня есть эти annoations в начале DaoTest:
@TestExecutionListeners({ WithSecurityContextTestExecutionListener.class })
@ContextConfiguration(classes = DaoConfig.class)
@ContextConfiguration
такой же, как и в настоящем коде; У меня есть предложения, чтобы сделать его другим, но ничего конкретного. Как я это распутываю? Я также надеюсь, что есть способ сделать это, не используя классы org.springframework.web. * Или org.springframework.test.web. *, Так как это должно быть «под» всего веб-уровня.
На данный момент наша команда согласилась переместить Spring Security из уровня DAO и переместить его обратно на уровни контроллера и служб. Я думаю, что это лучшая архитектура, чтобы DAO не беспокоиться о том, какой пользователь может называть тот метод, который, кстати, упрощает тестирование. – sockmonk