суббота, 16 июля 2011 г.

Интеграционные vs. Unit-тесты

Три основных подхода касательно взаимоотношения интеграционных и unit-тестов:

1. Integration-driven. Изначально делаем тест интеграционным, используя реальные реализации зависимостей. При необходимости что-нибудь застабить/замокать подменяем необходимые зависимости на (внимание!) стабы/моки соответственно.
2. Unit-driven. Изначально делаем юнит-тест, а значит стабим/мокаем все зависимости. При необходимости заменяем некоторые зависимости реальными реализациями
3. Mixed. Основую логику тестируем unit-тестами, но пишем один-два интеграционных теста на основные сценарии.

Пост навеян вопросом на StackOverflow. Мне особенно симпатичен ответ ThomasArdal (который за mixed-вариант): хоть TDD и способствует использованию второго подхода, ничто не мешает в конце написать интеграционный тест. К сожалению, я пока в основном использую первый подход (медленный, но надежный), но потихоньку буду переходить к третьему.

А что по этому поводу думают мои дорогие читатели?

7 комментариев:

Unknown комментирует...
Этот комментарий был удален автором.
Unknown комментирует...

Такой еще вопрос был: http://stackoverflow.com/questions/5609508/asp-net-mvc3-and-entity-framework-code-first-architecture

Idsa комментирует...

Угу, тоже познавательно

Shaddix комментирует...

Вопрос кажется капитанским, нет? :)
Не переходя к конкретике и реальным граничным случаям, против пункта 3 не попрешь :) Можно спорить только о процентном количесиве интеграционных против юнит тестов.

Idsa комментирует...

Ну почему же? На этот счет есть очень много мнений. И если 3-й вариант и кажется самым логичным, то уж точно не всем :)

Анонимный комментирует...

кондитерские изделия и десерты готовим дома http://vkysno-doma.blogspot.com/

Wax Polish комментирует...

Granite epoxy
is a high-performance adhesive specifically formulated for bonding granite surfaces. This epoxy is essential for both installation and repair, offering a durable, long-lasting bond that can withstand the weight and natural characteristics of granite.

Key Benefits of Granite Epoxy:
Strong Adhesion: Granite epoxy creates a robust bond, ensuring that granite slabs stay securely in place, making it ideal for countertops, tiles, and other applications.

Durability: Once cured, granite epoxy is resistant to heat, moisture, and various chemicals, making it suitable for kitchens and bathrooms where conditions can vary.

Versatile Application: It can be used for bonding granite to other materials, such as wood, metal, or concrete, as well as for repairing chips and cracks in existing granite surfaces.

Ease of Use: Many granite epoxies come in user-friendly packaging, allowing for easy application. Some are also designed to cure clear, maintaining the aesthetic appeal of the granite.