Tengo un proyecto con el que intento aprender pruebas unitarias y prácticas de TDD. Me doy cuenta de que estoy llegando a casos bastante confusos en los que paso mucho tiempo montando burlas para una clase de utilidad que se usa prácticamente en todas partes.¿Es aceptable utilizar una clase de utilidad "real" en lugar de burlarse en TDD?
Por lo que he leído sobre pruebas unitarias, si estoy probando MyClass, debería burlarme de cualquier otra funcionalidad (como la proporcionada por UtilityClass). ¿Es aceptable (suponiendo que la propia UtilityClass tenga un conjunto completo de pruebas) simplemente usar la clase de utilidad en lugar de establecer simulaciones para todos los diferentes casos de prueba?
Editar: Una de las cosas que estoy haciendo un montón de configuración. Estoy modelando un mapa, con diferentes objetos en diferentes ubicaciones. Uno de los métodos comunes en mi clase de utilidad es GetDistanceBetween. Estoy probando métodos que tienen efectos en las cosas dependiendo de sus propiedades individuales, así que por ejemplo una prueba que selecciona todos los objetos dentro de 5 unidades de un punto y una edad superior a 3 necesitarán varias pruebas (obtiene objetos viejos dentro del rango, ignora objetos viejos de rango, ignora los objetos jóvenes dentro del rango, funciona correctamente con múltiplos de cada caso) y todas esas pruebas necesitan la configuración del método 'GetDistanceBetween'. Multiplique eso por cada método que use GetDistanceBetween (casi todos) y los diferentes resultados que el método debería devolver en diferentes circunstancias, y se requiere mucha configuración.
Veo cómo desarrollo esto aún más, puede haber más llamadas de clases de utilidad, grandes cantidades de objetos y mucha configuración en esas clases de utilidad simuladas.
+1 para enfatizar "hacer pruebas simples" –