5?
Например, есть класс Rectangle, у которого есть метод area(), который высчитывает площадь, и конструктор Rectangle (length, width).
У класса Rectangle есть наследник, класс Square, который имеет конструктор Square (length), при вызове конструктора суперкласса, Rectangle (length, width), вызывается super(length, length).
При использовании объекта класса Square, как подтипа класса Rectangle, сломается контракт метода area(), потому что, неожиданно для всех, при изменении длинны прямоугольника меняется его ширина.
Если написать модульные тесты по отдельности, классы соблюдают свой контракт, но при использовании полиморфизма получаются неожиданные результаты
Проще говоря, каким способом можно протестировать square чтобы поймать нарушение контракта rectangle?
Контракт area не ломается, он все ещё width * length
Обсуждают сегодня