Domanda

Sto usando Spring.net con NHiberante (HibernateTemplate) per implementare i miei DAO.

Ho anche alcuni test di integrazione, che si estendono da "AbstractTransactionalDbProviderSpringContextTests".

DI funziona correttamente e tutti i test superano MA a volte superano anche quando non dovrebbero .

Ad esempio se i miei file hbm.xml presentano un errore del genere:

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

I test falliscono, ma se l'errore è come questo:

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

i test passano silenziosamente nascondendo il bug.

Lo sto testando usando SetComplete () e controllando le modifiche del DB, ma penso che l'idea di questo tipo di test non sia di farlo.

Qualcuno può dirmi come risolvere questo problema?

Grazie mille!

@Ben: se devo effettivamente eseguire gli script SQL per vedere se funzionano, quali sono i vantaggi dell'utilizzo di questo tipo di test Spring?

È stato utile?

Soluzione

Se si verifica un errore di sintassi nella mappatura, NHibernate non funzionerà su config.BuildSessionFactory ()

Ma per oggetti di database errati / inesistenti, l'unico modo per NHibernate di sapere è effettivamente eseguire una query ... Quindi potresti impiegare alcuni test di integrazione per testare l'inserimento / selezione su una singola entità, per assicurarti che funziona.

Non sono sicuro di cosa abbia a che fare con Spring.NET però.

Altri suggerimenti

Durante il test dei DAO basati su NH, è necessario svuotare la sessione in modo che il database venga aggiornato con le nuove informazioni ma continui a eseguire il rollback come prima. Come fare questo è spiegato qui - http://forum.springframework.net/showthread. php? t = 5246 Ho aggiunto questo ai documenti di riferimento. Spero che questo aiuti.

Saluti, Mark

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top