Как правило, я бы избегал тестирования, основанного на использовании элементов пользовательского интерфейса. Я предпочитаю интеграционное тестирование, которое проверяет все от уровня вашей базы данных до уровня представления (но не фактический макет).
Попробуйте запустить набор тестов до написания строки фактического кода в новом проекте, так как тесты сложнее написать позже.
Тщательно выбирайте то, что вы тестируете - не пишите бездумно тесты для всего. Иногда это скучная задача, так что не усложняй. Если вы пишете слишком много тестов, вы рискуете отказаться от этой задачи под тяжестью трудоемкого обслуживания.
Попробуйте объединить как можно больше функциональных возможностей в одном тесте. Таким образом, если что-то пойдет не так, ошибки будут распространяться в любом случае. Например, если у вас есть класс, генерирующий дайджест - проверьте фактический вывод, а не каждую вспомогательную функцию.
Не верь себе . Предположим, что вы всегда будете делать ошибки, и поэтому вы пишете тесты, чтобы сделать вашу жизнь проще, а не сложнее.
Если вам не нравится писать тесты, вы, вероятно, делаете это неправильно;)