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