Lightning
Трудоголик
Чувствительные тесты
Попадаю в ловушку с TDD. Попытаюсь абстрактно сформулировать суть проблем:
Допустим есть класс B, для него есть тест. Есть так же n-ое количество классов A1,A2,...,An , каждый из которых использует класс B (создает экземпляр класса B или наследуется от класса B, неважно, главное, что зависит от B). Для каждого класса A1,A2,...,An естественно существуют тесты. Допустим необходимо внести изменение в систему. Для этого нужно изменить класс B и это изменит результаты работы классов A1,A2,...,An. Получается, что в итоге нужно изменить один класс рабочего кода и n+1 тестов ! Получается - тесты слишком чувствительные.
Почему так получается. При тестировании каждого класса из A1,A2,...,An, работает и код класса B. Т.е. неявно происходит повторное тестирование класса B. Т.е. получается в тестах существует неявное дублирование.
Вопрос:
Как избавиться от подобного рода чувствительности тестов?
Скорее всего, будет дан ответ: снизить зависимость между классами A1,A2,...,An и B.
Но если это не возможно, что тогда?
Попадаю в ловушку с TDD. Попытаюсь абстрактно сформулировать суть проблем:
Допустим есть класс B, для него есть тест. Есть так же n-ое количество классов A1,A2,...,An , каждый из которых использует класс B (создает экземпляр класса B или наследуется от класса B, неважно, главное, что зависит от B). Для каждого класса A1,A2,...,An естественно существуют тесты. Допустим необходимо внести изменение в систему. Для этого нужно изменить класс B и это изменит результаты работы классов A1,A2,...,An. Получается, что в итоге нужно изменить один класс рабочего кода и n+1 тестов ! Получается - тесты слишком чувствительные.
Почему так получается. При тестировании каждого класса из A1,A2,...,An, работает и код класса B. Т.е. неявно происходит повторное тестирование класса B. Т.е. получается в тестах существует неявное дублирование.
Вопрос:
Как избавиться от подобного рода чувствительности тестов?
Скорее всего, будет дан ответ: снизить зависимость между классами A1,A2,...,An и B.
Но если это не возможно, что тогда?