Así materia de explotación de los sitios de SO y otras en Internet la mejor respuesta parece ser:Unidad de Pruebas: La tala y la inyección de dependencias
void DoSomething() {
Logger.Log("Doing something!");
// Code...
}
Ahora generalmente se evitaría métodos estáticos, pero en el caso de la extracción (un caso especial) esta es la ruta más fácil y más limpia. Dentro de la clase estática, puede inyectar fácilmente una instancia a través de un archivo/marco de configuración para darle el mismo efecto que DI.
Mi problema proviene de una perspectiva de pruebas unitarias.
En el código de ejemplo anterior imagine que el punto de DoSomething() era agregar dos números juntos. Escribiría mis pruebas de unidad para esta multa. ¿Qué hay de la tala?
¿Escribiría una prueba unitaria para el registro (aunque utilizo una instancia simulada para el registrador)? Sé que si este fuera el caso, tendría que escribir una prueba de integración para demostrar que el registrador realmente escribió en un archivo de registro, pero no estoy seguro.
Siguiendo el desarrollo impulsado por prueba (lo que hago) la prueba de unidad sería necesaria para que dicte la interfaz no?
¿Algún consejo?
Ese es un punto justo. Estoy muy consciente de que la cobertura del 100% del código no significa nada y, en general, esta parece ser la solución más pragmática. Como dijiste, si el registro funciona o no, no debería afectar la lógica comercial. – Finglas
La cancelación del registro es exactamente la razón por la que debe probar algunas declaraciones de registro. Las entradas de registro se convierten en una fuente de señales de eventos para los sistemas de gestión aguas abajo. Debería escribir pruebas unitarias para esas fuentes, de modo que se le alertará cuando las elimine o las altere de forma que rompa el sistema descendente. Por ejemplo, si las operaciones extraen sus registros para fallas de compromiso, debe asegurarse de que el contenido de esos mensajes se conserve incluso cuando cambie el comportamiento o agregue o disminuya la fidelidad de registro de otras maneras. Una gran relación con las operaciones es clave para recolectar casos de uso real para que se conviertan en pruebas. –