Нужно ли тестировать объекты используемые в качестве составляющих другого объекта (композиция)?
Классический пример с классом Car:
нужно ли тестировать класс Engine, или достаточно тестов только для Car?
1. Bio man - 01 Апреля, 2016 - 21:16:49 - перейти к сообщению
2. maggie - 09 Июля, 2020 - 11:14:00 - перейти к сообщению
Нужно все тестировать.
3. imbecile - 12 Июля, 2020 - 13:05:35 - перейти к сообщению
есть полезная метрика "покрытие кода тестами", если не протестируете Engine, 100% никогде не достигнете )
4. LIME - 15 Июля, 2020 - 10:07:38 - перейти к сообщению
imbecile пишет:
и не надо этого хотеть 100% никогде не достигнете )
Bio man Смотря что за тесты. Функциональные и приемочные тестируют все внутренности, но нет гарантии что покрыл все кейсы для всех модулей(классов) и они медленные(для больших проектов важно), и для них придется подделывать инфраструктуру(всякие хранилища, очереди итд), а это может превратиться в больно на крупных проектах. А по модульным
Bio man пишет:
как ни странно ответом будет: тебе решать)нужно ли тестировать класс Engine, или достаточно тестов только для Car?
Если там сложная логика, ответственное место, был уже баг - лучше покрыть. А еще лучше писать сначала тест и его использовать при написании модуля. Кстати баги имеют свойство кучковаться вокруг плохо написанных/сложных модулей.
По канону для модульного теста агрегируемый объект надо мокать. Все что смотрит наружу или приходит извне мокают на разные кейсы. Типа а вот если он так ответит, а вот если так, а вот теперь он бросил такое исключение. И все это подделывается моком. Весь внешний мир это моки)
5. Sharonddavis - 31 Июля, 2023 - 16:23:02 - перейти к сообщению
нужно тестить