Spring .Net + NHibernate + Oracle + Testing

43 views
Skip to first unread message

Christian Palomares (ShinjiDev)

unread,
Feb 20, 2012, 8:50:46 AM2/20/12
to AltNet-Hispano
Holas

Dentro de mi equipo estamos viendo el testing de la DAL de un
proyecto, y debido a las tecnologías que usamos, comencé a leer al
respecto y me encontré con:
http://www.springframework.net/doc-latest/reference/html/orm.html#orm-hibernate-integration-testing

Intenté guiarme de algunos blogs que indicaban que la mejor forma de
hacer testing es hacerlo en memoria y usando un SQLite, el problema es
que como acá se usa una BD Oracle, al momento de hacer el mapeo se
asignan los sequence a utilizar, esto causa que cuando intente usar
SQLite en el testing, el dialecto no reconoce los sequence (pues
SQLite no utiliza estos).

Cuál es la mejor forma de hacer testing en estos casos???Mi idea es
reconstruir la BD en cada Test que haga.

Saludos

Juanma

unread,
Feb 20, 2012, 9:38:47 AM2/20/12
to altnet-...@googlegroups.com
Hola,

Puedes hacer los tests contra Oracle directamente, hay varias alternativas para ello (crear/eliminar la base de datos para cada tests, hacer cada test en una transacción y hacer un rollback al final, etc.), pero van a tardar más en ejecutarse.

Creo que si usas un generador "native" para el id, NH se encarga de traducirlo al tipo más apropiado (identity en SQL, sequence en Oracle). Más info aquí: http://davybrion.com/blog/2007/07/native-id-generation-with-nhibernate/

Como último recurso, puedes reescribir al vuelo los mappings de NHibernate antes de ejecutar los tests para cambiar los sequence por otro tipo de POIDs (identity o lo que quieras). Tienes un ejemplo (aunque hace justo lo contrario, pasar de identity a sequence) aquí: http://blog.koalite.com/2011/08/modificar-la-configuracion-de-nhibernate-por-codigo/

Saludos,

Juanma.


--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a altnet-hispan...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/altnet-hispano?hl=es.

Christian Eduardo Palomares Peralta

unread,
Feb 20, 2012, 9:43:27 AM2/20/12
to altnet-...@googlegroups.com
Estuve haciendo lo mismo que en el primer link que mandaste, sin embargo me mandaba error de dialecto al ejecutarlo contra SQLite :(

Ahorita he podido hacerlo contra una BD de prueba que tengo y se recrea la BD desde un inicio gracias al parámetro :
<entry key="hbm2ddl.auto" value="create" />

Mas bien, cuál sería la mejor forma de inicializarlo con algo de data tonta???

Saludos
--
Christian Eduardo Palomares Peralta (ShinjiDev) - http://shinjidev.com

Dario Quintana

unread,
Mar 5, 2012, 10:00:37 PM3/5/12
to altnet-...@googlegroups.com
Sin errores (mensajes, stacktraces y toda la fruta) no hay mucho cómo ayudarte.

En aplicaciones, suelo tener un proyecto de consola sirve a la cuestion, que cada vez que necesito inicializar una app (schema + datos de demos), corro la consola y listo.

2012/2/20 Christian Eduardo Palomares Peralta <palom...@gmail.com>



--
Dario Quintana
Reply all
Reply to author
Forward
0 new messages