Показать сообщение отдельно
Старый 25.06.2005, 01:58     # 11
Saruman
::VIP::
 
Аватар для Saruman
 
Регистрация: 12.11.2002
Адрес: Nicosia, Cyprus
Сообщения: 1 285

Saruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman Гуру
Кста, дописывая очередной тест, понял еще один недостаток MI и преимущество композиции. Если исходить из того, что тестами должен быть покрыт весь код (что логично, т.к. если суперкласс проходит набор тестов, это еще не значит, что аналогичные тесты будут 100% проходит и в субклассе), то при написании юнит теста для субкласса мы должны также полностью покрыть всю функциональность, наследуемую им от родителей. При этом, если дальнейшие изменения в суперклассах нарушат тесты данного субкласса, то не очевидно, изменения в каком из них привели к этому, т.к. все суперклассы имеют влияние на результаты тестов.
Если же мы использует композицию, то просто заменяем вложенный класс стабом/моком и забываем про изменения в нем. До тех пор, пока интерфейсные методы этого класса проходят тесты на заявленную функциональность, любые изменения в нем не приведут к нарушениям в использующих его классах. Это не считая того, что таким образом мы сокращаем объем необходимых тестов.
__________________
"If people only knew how hard I work to gain my mastery, it wouldn't seem so wonderful at all." Michelangelo Buonarroti

Последний раз редактировалось Saruman; 25.06.2005 в 02:02.
Saruman вне форума