Я никогда не любил юнит-тестирование. Я всегда думал, что это увеличило объем работы, которую я должен был сделать.
Оказывается, это верно только с точки зрения фактического количества строк кода, которые вы пишете, и, более того, это полностью компенсируется увеличением количества строк полезного кода, которые вы можете написать за час с помощью тестов и разработки, управляемой тестами.
Теперь я люблю модульные тесты, так как они позволяют мне писать полезный код, который довольно часто работает с первого раза! (постучать по дереву)
Я обнаружил, что люди неохотно проводят юнит-тесты или начинают проект с разработки на основе тестов, если они находятся в строгих временных рамках или в среде, где другие этого не делают, поэтому они этого не делают. Вроде как, культурный отказ даже попробовать.
Я думаю, что одна из самых важных вещей в модульном тестировании - это уверенность, которую он дает вам для проведения рефакторинга. Это также дает новую надежду, что я могу передать свой код кому-то другому для рефакторинга / улучшения, и если мои модульные тесты все еще работают, я могу использовать новую версию библиотеки, которую они модифицировали, почти без страха.
Это последний аспект модульного тестирования, который, я думаю, нуждается в новом имени. Модульное тестирование больше похоже на контракт того, что этот код должен делать сейчас и в будущем.
Когда я слышу слово «тестирование», я вспоминаю о мышах в клетках, на которых было проведено несколько экспериментов, чтобы увидеть эффективность соединения. Это не то, что такое модульное тестирование, мы не пробуем другой код, чтобы увидеть наиболее эффективный подход, мы определяем, какие результаты мы ожидаем с какими входами. В примере с мышами юнит-тесты больше похожи на определения того, как будет работать вселенная, а не на эксперименты, проведенные на мышах.
Я взломан или кто-то еще видит этот отказ от тестирования и думают ли они, что это та же самая причина, по которой они не хотят это делать?
Какие причины вы / другие приводите для отказа от тестирования?
Как вы думаете, что их мотивы не в модульном тестировании?
И как новое имя для модульного тестирования, которое может снять некоторые возражения, как насчет jContract? (Немного ориентирован на Java, я знаю :), или Unit Contracts?