Начну.
С тех пор, как я стал практиковать TDD (Test Driven Development, разработку, направляемую тестами) - я заметил, что у меня поменялся стиль программирования. Я автоматически стараюсь писать код таким образом, чтобы его отдельные участки легко можно было покрыть юниттестами.
Например, если мне нужно собрать откуда-то данные, немного их поколбасить, а потом результат куда-то записать - я напишу три отдельные функции. Первая будет собирать сырые данные, вторая будет колбасить переданные ей на вход данные и возвращать переколбашенные, третья будет записывать переданные ей на вход данные. В таком случае я могу проверить работоспособность каждой функции (в том числе и автоматическими тестами) независимо от работоспособности (и вообще наличия) других функций.
Фактически, написание тестов перед написанием кода помогает мне быстрее придумывать хороший и простой дизайн будущего кода. Который, к тому же, оказывается хорошим не только для дальнейшей поддержки и развития, но и для тестирования.
Резюмируя. Если брать определение юниттестирования,
предложенное Палычем, то для повышение тестопригодности кода, нужно разбивать его на доступные фрагменты, которые могут быть протестированы по отдельности