2008-11-21 10 views
11

Soy nuevo en pruebas unitarias. Pero, ¿cómo pruebo unitario mi DAL que está escrito con Entity Framework, así puedo asegurarme de que mi código DAL funciona correctamente pero no se toca realmente ninguna base de datos? ¿Podría alguien dar tantos detalles como sea posible, por favor?¿Cómo puedo probar la unidad correctamente mi DAL?

Respuesta

15

Si quiere probar que su capa de acceso a datos funciona correctamente, realmente necesita probarla contra una base de datos en algún momento, ya que de lo contrario no está realmente probando que funciona.

+0

+1 Y si no existe una base de datos de prueba, se debe crear una (parece que al OP le preocupan las actualizaciones de datos). –

+1

¿Cuál es el papel de la burla, podría alguien explicar el uso de eso vs. el papel de una base de datos de prueba? –

+2

Una base de datos de prueba con la que ejecutaría sus pruebas de integración (las pruebas de su DAL). Se usaría Mocking para reemplazar su DAL para pruebas unitarias, de modo que simplemente pruebe la lógica sin llegar a la base de datos (por ejemplo, asegúrese de que su código llame correctamente a su DAL proporcionando un simulacro). – Todd

4

Cuando pruebo una unidad de mi DAL utilizo transacciones y retrotracción al final de la prueba de unidad, por lo que la base de datos está limpia.

+0

interesante, nunca pensé en eso, estoy seguro de que puedo googlearlo pero ¿tiene un fragmento de código sobre cómo lo hace? –

+0

Esto no es una prueba unitaria, sino una prueba de integración, que está bien. Una gran cantidad de marcos tienen sus pruebas de integración apuntan a una base de datos de pruebas por separado, con transacciones automáticas en cada prueba individual. –

+0

¿NUnit realiza esta prueba de auto trans en la prueba? Si es así, ¿cómo configuro para hacer eso? –

4

Pruebas unitarias DAL es un dolor de cabeza muy común en el desarrollo. En su mayor parte, sugiero que se lo salte.

La mayoría de los ORM en estos días ofrecen algún tipo de lenguaje de consulta, ya sea LINQ o HQL, o algún otro sabor. Debido a que una prueba unitaria adecuada requiere que no golpees la base de datos, tienes que burlarte del ORM y hacerlo es el mayor dolor en el culo que puedes pensar. No vale la pena, IMO. En última instancia, solo terminas probando que escribiste la consulta correcta en tu código; no obtiene ningún valor de regresión y puede servir mejor a sus propósitos mediante la inspección del código.

No estoy diciendo que no deba probar su uso del DAL, sin embargo; simplemente no pruebes las pruebas unitarias. Aún debe tener un conjunto de pruebas de integración y aceptación del usuario para su programa/sistema; permita que aquellos manejen las pruebas de acceso a sus datos en su lugar.

Cuestiones relacionadas