2008-09-24 4 views
0

SpringNet에서 NHiberante (HibernateTemplate)를 사용하여 DAO를 구현했습니다.Spring.net + Nhibernate 통합 테스트 합격하지 않았을 때 합격

또한 'AbstractTransactionalDbProviderSpringContextTests'에서 확장되는 통합 테스트가 있습니다.

DI가 정상적으로 작동하며 모든 테스트가 통과하지만 가끔 이 아니어도 일 때도 통과합니다. 예를 들어

내 hbm.xml 파일과 같은 오류가있는 경우

:

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

:

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

테스트가 실패하지만,이 오류가 이와 같은 경우 테스트는 자동으로 버그를 숨 깁니다.

SetComplete()을 사용하여 테스트하고 변경 사항을 DB에서 확인하지만이 종류의 테스트에 대한 아이디어는 그렇게하지 않는 것이 좋습니다.

누구든지이 문제를 해결하는 방법을 알려 줄 수 있습니까?

대단히 감사합니다!

@Ben : 실제로 작동하는지 확인하기 위해 SQL 스크립트를 실행해야한다면 이런 종류의 스프링 테스트를 사용하면 어떤 이점이 있습니까?

+0

는 당신이 봄 테스트 무슨 뜻인지 모르겠어요. 나는 봄 사용자 (나는 Castle Windsor를 선호한다)가 아니며 일반적으로 테스트 결과를 남겨 둡니다. 아마도 여기에서 새로운 질문을 할 수 있습니다. –

+0

스프링 테스트에 의하면 저는 봄을 의미합니다. 테스트. 니트. 편의 추상 클래스 인 AbstractTransactionalDbProviderSpringContextTests이므로 [test]로 주석 된 각 메소드는 항상 롤백되는 트랜잭션 내에서 실행되므로 DB가 테스트에 의해 오염되지 않고 정리할 필요가 없습니다. –

답변

1

당신이 당신의 매핑 구문 오류가있는 경우에, NHibernate에이 config.BuildSessionFactory()

에 실패하지만 mispelled/비 존재 데이터베이스 오브젝트에, NHibernate에 알 수있는 유일한 방법은 실제로 실행하는 것입니다 쿼리 ... 그래서 하나의 엔티티에 삽입/선택을 테스트하여 작동하는지 확인하기 위해 일부 통합 테스트를 사용할 수 있습니다.

Spring.NET과 어떤 관련이 있는지 잘 모르겠습니다.

2

NH 기반 DAO를 테스트 할 때 세션을 플러시해야 데이터베이스가 새로운 정보로 업데이트되지만 이전과 마찬가지로 롤백 할 수 있습니다. 이 작업을 수행하는 방법은 여기에서 설명합니다. http://forum.springframework.net/showthread.php?t=5246 참조 문서에 추가했습니다. 희망이 도움이됩니다.

건배, 마크

관련 문제