Pergunta

Eu estou usando Spring.net com NHiberante (HibernateTemplate) para implementar o meu DAO.

Eu também tenho alguns testes de integração, que se estendem desde 'AbstractTransactionalDbProviderSpringContextTests'.

DI está funcionando bem, e todos passam teste, mas às vezes eles passam , mesmo quando não deveriam .

Por exemplo, se os meus arquivos hbm.xml tem um erro como este:

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

Os testes falhar, mas se o erro é como este:

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

os testes passam silenciosamente esconder o bug.

Estou testando-lo usando SetComplete () e verificar o DB para as mudanças, mas acho que toda a idéia deste tipo de testes não é fazê-lo.

Alguém pode me dizer como resolver este problema?

Muito obrigado!

@ Ben:? Se eu tiver que realmente executar os scripts SQL para ver se eles funcionam, qual é a vantagem de usar este tipo de testes Primavera

Foi útil?

Solução

Se você tem um erro de sintaxe no seu mapeamento, em seguida, NHibernate irá falhar em config.BuildSessionFactory ()

Mas para mispelled objetos de banco de dados / não-existência, a única maneira para NHibernate de saber é realmente executar uma consulta ... Então você pode empregar alguns testes de integração para inserir test / selecione em uma única entidade, para ter certeza que obras.

Não sei o que isso tem a ver com Spring.NET embora.

Outras dicas

Ao testar o seu DAO baseado NH é que você deve liberar a sessão para que o banco de dados é atualizado com as novas informações, mas ainda rollback como antes. Como fazer isso é explicado aqui - http://forum.springframework.net/showthread. php? t = 5246 eu adicionei isso para os documentos de referência. Espero que isso ajude.

Cheers, Mark

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top