2013-01-14 4 views
3

일반 문자열 HQL 쿼리를 생성하는 HQL 쿼리 팩토리와 같은 것이 있습니다. 실제로 무엇인가를 통해 쿼리를 실행하여 데이터베이스와의 통합 테스트를 수행하지 않고 어떻게 구문 오류를 테스트 할 수 있습니까?유닛 테스트 HQL 쿼리

가장 좋은 옵션은 마법의 VerifyHql() 메서드를 호출하거나 어딘가에서 그것을 사용하여 의미있는 구문 분석 예외 또는 기타를 잡는 것입니다.

답변

3

쿼리 할 데이터베이스가없는 쿼리를 테스트하는 것은 의미가 없기 때문에 통합 테스트를 사용하여 테스트해야합니다. 그러나 실제 서버를 치는 대신 use an in memory SQLite database 수 있습니다. 유효한 NuGet SQLite package가 있습니다.

+0

제이미, 요점이 있습니다! 데니스, 당신은 NHibernate 코드를 다운로드하고'HQL' 테스트를 관찰 할 수 있습니다. (..Testing * Data *는 HQL 테스트가 실행되기 전에 DB에서 플러시됩니다 ...) –

+0

글쎄, 나는 아직도 그것이 어떤 시나리오에서는 의미가 있다고 생각합니다. 하나의 예는 동적으로 생성되는 고도로 복잡한 HQL 쿼리를 테스트하는 것입니다 (드물지만 매우 복잡한 HQL 쿼리를 처리해야합니다). 메모리 내 데이터베이스에 대해이 쿼리를 테스트하는 테스트에는 매우 많은 양의 테스트가 있지만 여전히 빠른 구문 테스트가 필요한 일부 값을 볼 수 있습니다. 매핑 된 모든 세부 사항에 대한 통합 테스트없이 매핑의 무결성을 검사하는 테스트가 가치가 있다고 말하면서 동일한 방향으로 나아갑니다. –