Sí, en primer lugar, olvídate de las pruebas unitarias como una razón para diseñar tu código en torno a las herramientas de prueba unitarias, nunca es una buena idea doblar el diseño de tu código para que se ajuste a una restricción artificial. Si sus herramientas lo obligan a hacerlo, obtenga mejores herramientas (por ejemplo, Microsoft Fakes / Moles que le permiten muchas más opciones para crear objetos simulados).
Por ejemplo, ¿dividiría sus clases en métodos solo públicos solo porque las herramientas de prueba no funcionan con métodos privados? (Sé que la sabiduría predominante es fingir que no es necesario probar métodos privados, pero creo que esto es una reacción a la dificultad de hacerlo con las herramientas actuales, no una reacción genuina a la no necesidad de probar pruebas privadas).
En general, todo se reduce a qué tipo de TDDer eres: el "simulacro" como los describe Fowler , necesita cambiar el código para adaptarlo a las herramientas que usa, mientras que los probadores "clásicos" crean pruebas que son más integrales en la naturaleza. (es decir, pruebe la clase como una unidad, no cada método) para que haya menos necesidad de interfaces, especialmente si utiliza las herramientas que pueden burlarse de clases concretas.