Юнит-тесты. Sociable и Solitary тесты

Как мы говорили ранее, юнит-тесты - это тесты которые изолированно проверяют работу одного компонента нашей системы (юнита). Но насколько изолированными должны быть юнит-тесты?

К сожалению, до сих пор разработчики со всего мира так и не пришли к единственному ответу на этот вопрос.

Некоторые считают, что юнит тесты должны проверять только конкретный модуль (юнит), а все остальные модули заглушивать (переопределять их поведение до предсказуемого). Такой подход называется одиночное тестирование (Solitary unit-testing).

Другие - наоборот, считают, что изолировать юнит-тесты стоит только от медленных операций (взаимодействия с БД, веб-сервисами и т. д.). Такой подход называется комуникабельным тестированием (Sociable unit-testing).

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

В противовес комуникабельные тесты дают нам больше уверенности в работоспособности фичи в целом и требуют меньше внимания в поддержке. Однако, падение такого теста менее информативно, чем падение одиночного теста, что можеш усложнить дебаг.

Last updated