Я работаю над проектом Spring MVC, и у меня есть модульные тесты для всех различных компонентов в исходном дереве.Модульные тесты против тестов интеграции с весной
Например, если у меня есть контроллер HomeController
, который должен иметь LoginService
впрыскивают в нее, то в моем единичном тесте HomeControllerTest
я просто экземпляр объекта в нормальном режиме (за пределами Spring) и придать свойство:
protected void setUp() throws Exception {
super.setUp();
//...
controller = new HomeController();
controller.setLoginService(new SimpleLoginService());
//...
}
Это отлично подходит для тестирования каждого компонента как изолированного устройства - за исключением того, что у меня есть несколько десятков классов в проекте, после написания класса и написания успешного модульного теста для него, я продолжаю забывать обновлять свой Spring MVC контекстный файл, который выполняет фактическую проводку в развернутом приложении. Я узнаю, что забыл обновить файл контекста, когда я развожу проект на Tomcat и найду кучу NullPointers из не связанных с ним компонентов.
Итак, вот мои вопросы:
Это моя первая весна проект - это нормально для создания модульных тестов для отдельных бобов, как я сделал, а затем создать второй набор тестов (интеграционные тесты), чтобы проверить, что все работает так, как ожидалось, с фактическим контекстом приложения? Существует ли для этого наилучшая практика?
Кроме того, как вы отделяете модульные тесты от интеграционных тестов? У меня есть весь исходный код в
src
, модульные тесты вtest
- должна ли быть 2-я тестовая папка (например,test-integration
) для тестовых примеров интеграции?
Поскольку это моя первая весна проект, мне очень интересно, как другие, как правило, идут о выполнении такого рода вещи - и вместо того, чтобы вновь изобретать колесо я скорее спросить остальную часть сообщества.
Это звучит неплохо. Но с модульными тестами и интеграционными тестами в тех же самых каталогах нет возможности для Eclipse рассказать им обособленно, не так ли? Единственные опции Eclipse для запуска тестов junit - запустить только один или запустить все в определенной папке - не могут разбить их по имени, например Ant. – 2008-11-11 19:22:38
Мне пришлось вернуться и проверить Eclipse - вы правы, я не вижу способа дифференцировать тесты, если они находятся в одном каталоге. Мой последний проект Spring был выполнен в Idea/Intellij, и это было достаточно долго, что я не помню точно, что такое конфигурация IDE. – 2008-11-11 22:55:10