Я работаю над проектом Spring MVC, и у меня есть модульные тесты для всех различных компонентов в исходном дереве.
Например, если у меня есть контроллер HomeController
, который должен иметь в нем LoginService
, то в моем unit test HomeControllerTest
я просто создаю объект как обычный (вне Spring), и введите свойство:
protected void setUp() throws Exception {
super.setUp();
//...
controller = new HomeController();
controller.setLoginService( new SimpleLoginService() );
//...
}
Это отлично работает для тестирования каждого компонента как изолированного устройства - за исключением того, что у меня есть несколько десятков классов в проекте, после написания класса и написания успешного unit test для него я забываю обновить свой Spring Контекстный файл MVC, который выполняет фактическую проводку в развернутом приложении. Я узнал, что забыл обновить файл контекста, когда я развертываю проект в Tomcat и нахожу кучу NullPointers из непроводного beans.
Итак, вот мои вопросы:
-
Это мой первый проект Spring - нормально ли создавать отдельные тесты для отдельного beans, как я это сделал, а затем создать второй набор тестов (интеграционных тестов), чтобы проверить, что все работает как ожидалось с фактическим контекстом приложения? Существует ли для этого наилучшая практика?
-
Кроме того, как вы отделяете модульные тесты от тестов интеграции? У меня есть весь исходный код в
src
, модульные тесты вtest
- должна ли быть вторая тестовая папка (например,test-integration
) для тестовых случаев интеграции?
Так как это мой первый проект Spring, мне любопытно, как обычно обычно идут дела такие вещи - и вместо того, чтобы изобретать колесо, я скорее прошу остальных.