Pregunta

Estoy usando Spring.net con NHiberante (HibernateTemplate) para implementar mis DAO.

También tengo algunas pruebas de integración, que se extienden desde 'AbstractTransactionalDbProviderSpringContextTests'.

DI funciona bien y todas las pruebas pasan, PERO a veces pasan incluso cuando no deberían.

Por ejemplo, si mis archivos hbm.xml tienen un error como este:

<class name="Confluence.Domain.User" table="THIS TABLE DOES NOT EXIST">

La prueba falla, pero si el error es como este:

<many-to-many class="Confluence.Domain.User" column="THIS COLUMN DOES NOT EXIST"/>

las pruebas pasan silenciosamente ocultando el error.

Lo estoy probando usando SetComplete() y verificando los cambios en la base de datos, pero creo que la idea de este tipo de pruebas no es hacerlo.

¿Alguien puede decirme cómo solucionar este problema?

¡Muchas gracias!

@Ben:Si realmente tengo que ejecutar los scripts SQL para ver si funcionan, ¿cuál es el beneficio de usar este tipo de pruebas Spring?

¿Fue útil?

Solución

Si tiene un error de sintaxis en su mapeo, NHibernate fallará en config.BuildSessionFactory()

Pero para los objetos de base de datos mal escritos o que no existen, la única forma que tiene NHibernate de saberlo es ejecutar una consulta...Por lo tanto, podría emplear algunas pruebas de integración para probar la inserción/selección en una sola entidad, para asegurarse de que funcione.

Sin embargo, no estoy seguro de qué tiene esto que ver con Spring.NET.

Otros consejos

Al probar sus DAO basados ​​en NH, debe vaciar la sesión para que la base de datos se actualice con la nueva información pero aún así se revierta como antes.Cómo hacer esto se explica aquí: http://forum.springframework.net/showthread.php?t=5246 Agregué esto a los documentos de referencia.Espero que esto ayude.

Saludos, Mark

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top