Spring.net + Test di integrazione negligente passano quando non dovrebbero
-
02-07-2019 - |
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?
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