N-уровневая архитектура и модульные тесты (с использованием Java) - PullRequest
0 голосов
/ 12 января 2011

Я хотел бы получить ваши экспертные объяснения по поводу архитектурного вопроса.Представьте себе веб-приложение Spring MVC с API проверки (JSR 303).Поэтому для запроса у меня есть контроллер, который обрабатывает запрос, а затем передает его на уровень обслуживания, который переходит на уровень DAO.

Вот мой вопрос.На каком уровне должна проходить валидация и как?

Мое мнение состоит в том, что контроллер должен обрабатывать базовую валидацию (являются ли обязательные поля пустыми? Длина поля в порядке? И т. Д.).Тогда сервисный уровень может делать некоторые хитрые вещи, которые включают другие объекты.DAO вообще не проверяет.НО, если я захочу реализовать какое-то модульное тестирование (т. Е. Уровни тестирования ниже службы, а не контроллеры), я получу неожиданное поведение, потому что некоторые проверки должны были быть выполнены на уровне контроллера.Поскольку мы не используем его для модульного тестирования, возникает проблема.

Как лучше всего с этим справиться?Я знаю, что нет универсального ответа, но ваш личный опыт очень приветствуется.

Большое спасибо.С уважением.

1 Ответ

3 голосов
/ 13 января 2011

В тестах вашего сервисного модуля составьте ваши тестовые данные так, как будто они прошли все проверки валидации уровня контроллера - по сути, предположите, что валидация уровня контроллера будет работать идеально, и ваша служба будет только когда-либо получать данные, которые действительны с точки зрения контроллера. Затем проверьте каждый из этих случаев проверки в модульных тестах контроллера. Наконец, включите интеграционные тесты, которые не проходят валидацию на обоих уровнях, и убедитесь, что ни один из них не прошел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...