La respuesta se burla de
Sin embargo, la manera de hacer esto que he encontrado es el siguiente.
Separe el DAL en 2 capas. La parte inferior simplemente realiza lectura atómica y escribe en las bases de datos; todos estos objetos implementan un conjunto de interfaces IReadFromDB e IWriteToDB.
Luego puede crear su lógica comercial de lectura y escritura en un nivel DAL más alto, en lugar de hacer referencia a los objetos que leerán y escribirán en la base de datos las interfaces y las propiedades de uso para sustituir la funcionalidad. Tiendo a incluir los objetos funcionales deseados en los constructores para que las cosas funcionen "de fábrica", por así decirlo.
Esto hará que sea muy fácil 'cambiar' la funcionalidad y así probar la lógica de la empresa.
En cuanto a las pruebas de lectura y escritura de la base de datos ... No he encontrado una manera que no implique el trabajo. Normalmente utilizo una cadena de conexión diferente a una copia de la base de datos y luego escribo la generación de datos y el código de limpieza para las pruebas unitarias para dejar el estado de la base de datos igual que antes y después.
Sí, lleva mucho tiempo ... sin embargo, no corre el riesgo de alejar a un cliente. Depende de tus prioridades
Alguien más mencionó las pruebas de rendimiento. No consideraría esto como parte de una prueba unitaria. Normalmente hago esto con un arnés de prueba en combinación con el código de depuración simplemente porque el rendimiento de las piezas pequeñas a menudo es engañoso: cuando se pasa al panorama general, las partes que realmente son problemas de revestimiento a menudo no son las partes que marcarían las pruebas localizadas en mi experiencia .
Creo que las pruebas de interacción funcionarían mejor aquí – IAdapter
Dado que hay tanto interés en un tema tan común y simple, sugeriría que habría un gran mercado para un estudio de caso o un libro sobre este tema. Afecta a casi todos los desarrolladores de .NET y, sin embargo, la información es incompleta y no comprobada.Sabemos cuáles son las mejores prácticas, pero en este escenario, ¿cómo se pueden implementar prácticamente las pruebas/burlas unitarias? –