Ответ 1
У меня нет полного ответа (я бы хотел услышать любого, кто это делает, честно), но может хотя бы выслать несколько моментов...
- Вы уже на правильном пути, запустив разработку из тестов в первую очередь. Тесты на установку модульной установки в существующие приложения сложны и редко обеспечивают реальную выгоду (вместо этого они часто дают ложное представление о покрытии кода). Правильный TDD всегда является предусмотрительным, никогда не запоздалым.
- Я бы не стал тестировать частные функции. Различные инструменты покрытия кода могут сказать, что он оставлен непроверенным, но если он закрыт, то его функциональность должна быть проверена путем тестирования общедоступных методов. Частные методы являются внутренними, а не частью API, ничто за пределами класса (даже тесты) не должно знать или заботиться о них, так как они могут легко измениться, если будет изменена реализация этого класса.
- Сосредоточьтесь на открытом API вашего кода. Напишите тесты против ваших интерфейсов, а не против ваших классов. Сами классы впоследствии реализованы и протестированы против тестов.
- Наконец, и очень важно изучить, что вы делаете и каковы его преимущества. Тестирование блок-единиц не является коричневым и обслуживающим процессом. Один из них не достигает хорошего тестового покрытия, просто называя тесты, но понимая TDD и как его реализовать. Это займет практику. Одно из предложений, которое я хотел бы дать, - это сделать правильный проект TDD, а также попытаться выполнить ретро-тестирование в существующий проект. Мы можем сказать друг другу весь день, что первое лучше, чем последнее, но, делая оба, вы можете действительно различать различия и лучше понимать, почему это лучше. Это приведет вас не только к написанию тестов, но и к тому, чтобы быть более опытным специалистом TDD и тем, что он действительно приносит в таблицу. Любой может писать тесты, но слишком часто они просто теряют время, если они действительно не понимают, что происходит.