2011-03-15 3 views
1

현재 프로젝트에서 NHibernate를 사용하고 있으며 NDBUnit을 사용하여 단위 테스트를위한 데이터로 DB를 채우고 있습니다. 내가 뭘하고 싶은 건 데이터를로드 할 때 NHibernate에 의해 반환 된 클래스 인스턴스에 대해 NDBUnit에서 사용하는 XML을 확인하는 것입니다.NDBUnit으로 NHibernate 매핑 확인하기

클래스에 리플렉션을 사용하여 모든 속성을 가져온 다음 NDBUnit XML 데이터 세트에서 해당 열 값을 조회하는 것처럼 보입니다. 휠을 재발 명하고 있는지 또는 모든 NHibernate 매핑이 올바른지 확인하는 더 나은 대안이 있는지 확실하지 않습니다.

답변

0

Fluent NHibernate의 PersistenceSpecification을 확인하십시오. 이 클래스에는 Fluent NHibernate에 의존하는 것이 없으며 일반 NHibernate hbm.xml 파일을 테스트 할 때 사용했습니다. 이 같은

http://wiki.fluentnhibernate.org/Persistence_specification_testing

예를 들어 당신이 쓸 수있는 테스트 :

[Test] 
public void CanCorrectlyMapEmployee() 
{ 
    new PersistenceSpecification<Employee>(session) 
     .CheckProperty(c => c.Id, 1) 
     .CheckProperty(c => c.FirstName, "John") 
     .CheckProperty(c => c.LastName, "Doe") 
     .VerifyTheMappings(); 
} 

를 적극 권장합니다.

+0

설치된 데이터베이스를 사용하는 경우이 방법이 효과적 일 수 있습니다. 그러나 인 메모리 데이터베이스 (예 : sqlite)를 사용하는 경우 통합 테스트를 위해 옹호해야 할 사항입니다. 유능한. 그 이유는 메모리 내 데이터베이스가 '매핑'에서 생성되고 레코드를 삽입 할 수 있는지 확인하기위한 테스트가 단순히 NHibernate ORM 자체를 테스트하기 때문입니다. –