За последний год или около того я разрабатывал свои отбивные TDD, так что теперь я довольно хорошо разбираюсь в основных вопросах - сначала пишу тесты, фальшивые фреймворки, тестирование как можно более мелких вещей, DI и т. Д. .Выполнение модульного тестирования на следующий уровень
Однако я чувствую, что все еще есть много вещей, которые я не получаю от модульного тестирования.
Например, я часто нахожу, что модульное тестирование таким образом действительно не проверяет интеграцию и общее число больше изображения того, что мой код должен делать. Со всем насмешливым я обнаружил, что упускаю из виду, тестируют ли методы, результаты которых я на самом деле нуждаются в, а не только о результатах, которые, по их словам, будут предоставлены. Когда я начинаю двигаться к BDD, я нахожу, что эта проблема только усугубляется, что приводит к расточительному времени разработки и неэффективным тестам.
Другая проблема заключается в том, что модульные испытания требуют большого объема обслуживания, чтобы поддерживать их упорядоченно, замедляя рефакторинг.
Когда я впервые начал модульное тестирование, как и большинство людей, я обнаружил, что то, что я писал, было действительно интеграционными тестами. Однако было много преимуществ для этих тестов - они были много легче читать и действовали как достойная документация по API моих программ. Они также, как правило, улавливают проблему реального мира гораздо быстрее, чем единичные тесты, которые, как я считаю, тратят много времени на таргетинг на крайние случаи, которые возникают только при неправильном использовании API (например, нулевые ссылки, деления на 0 и т. Д.).
Что вы думаете? Можете ли вы рекомендовать хорошие книги, статьи или практики, которые занимаются более продвинутым модульным тестированием и поддержанием производительности и эффективности?
РЕДАКТИРОВАТЬ: Немножко следуйте вопросам, учитывая ответы: Так что в основном вы говорите, что, несмотря на то, что все это тестирование «я не тестирую код», на что я отвечаю: «Но Я хочу проверить код dang! " На самом деле, когда я написал много «тяжелых» тестов интеграции, я обнаружил, что мой код, как правило, достигает состояния правильности намного быстрее, и ошибки были идентифицированы намного раньше. Можно ли достичь этого без проблем ремонтопригодности интеграционных тестов?
@cbp: это _unit_ тестирование. Он не предназначен для тестирования интеграции или большой картины. –