Я обычно создаю интерфейсы, чтобы свободно связывать классы для тестирования, чтобы я мог создавать подделки для классов, которые я не заинтересован в тестировании. Например, класс менеджера бизнес-логики будет иметь ссылку на интерфейс для класса доступа к данным.
Я создаю интерфейс, только если мне действительно нужен «шов» для моих тестов, я не просто создаю интерфейсы для всего.