Модульное тестирование с использованием одноэлементных компонентов Spring. - PullRequest
3 голосов
/ 01 июля 2010

По общему мнению, Singleton плохо подходит для модульного тестирования.

Но как насчет контейнера IoC, такого как среда Spring, для управления вашими компонентами, которые по умолчанию являются синглетонами?Использование этих компонентов в ваших классах также считается плохим для модульного тестирования таким же образом, как синглтон?

Ответы [ 2 ]

5 голосов
/ 01 июля 2010

Синглтоны не плохая вещь.Это очень хорошая вещь.

Шаблон Singleton Design , однако, обычно считается плохим, поскольку он может затруднить тестирование.

При наличии инфраструктуры IoCкак Spring, чтобы управлять своими синглетами для вас, у вас все в порядке.

Spring доказывает структуру модульного тестирования , которая управляет синглетами в течение жизненного цикла теста.

2 голосов
/ 15 сентября 2010

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

Это код в синглтоне, обеспечивающий его одноэлементность, который затрудняет тестирование с Spring, который больше не является проблемой.

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