3

게시물 제목에서 알 수 있듯이 레거시 데이터베이스 (해당 사항이 확실하지 않은 경우), Fluent NHibernate를 사용 중이며 Fluent NHibernate PersistenceSpecification class을 사용하여 매핑을 테스트하려고합니다. .레거시 데이터베이스, 유창한 NHibernate 및 내 매핑 테스트

내 질문은 실제로 프로세스 하나입니다. 저는 Visual Studio에서 로컬로 빌드 할 때 Unit Testing 프레임 워크를 사용하여 이것을 테스트하고 싶습니다. 분명히 이것은 데이터베이스를 필요로한다는 것을 의미합니다 (나는 생각합니다). 이것을 빌드에 적용하기위한 몇 가지 옵션은 무엇입니까? 만약 메모리 데이터베이스를 사용한다면 NHibernate 나 Fluent NHibernate는 목표 데이터베이스로부터 데이터베이스 스키마를 빠져 나오기위한 어떤 메커니즘을 가지고있을 것인가 아니면 아마도 메모리 데이터베이스에서 이것을 할 수있을 것인가? 메모리 데이터베이스에 피드를 제공하기 위해 스키마를 수동으로 가져와야합니까?

이상적으로이 설정은 다른 개발자가 테스트를 통과하지 못하기 때문에 빌드를 중단 할 때와 다른 생각을하지 않는 곳으로 가져 가고 싶습니다.

+0

어떤 데이터베이스 엔진입니까? –

+0

SQL Server 2005/2008 – sdanna

답변

2

NHibernate는 데이터베이스 스키마를 다시 만들 수 없으며 레거시 시스템이기 때문에 NH에서 스키마를 생성 할 수 없을 가능성이 높습니다. 가장 좋은 방법은 트랜잭션에서 통합 테스트를 수행하고 완료되면 롤백하는 것입니다. 라이브 시스템에서 주기적으로 재생되는 dev 및 테스트 데이터베이스에 대해 통합 테스트를 실행합니다.

+0

아마도 영어가 제 모국어가 아니기 때문에 질문을 올바르게 이해하지 못하거나 맵핑이 정확하고 레거시 시스템 용 .NET 데이터 공급자 어떤 일이 있어도 NHibernate는 DB 스키마를 내보낼 수 없습니까? –

+0

당신의 영어는 괜찮습니다. 제 대답이 더 좋았을 수도 있습니다. SchemaExport에서 데이터베이스를 생성하지 않으면 SchemaExport에서 동일한 스키마를 생성 할 가능성이 거의 없습니다. 레거시 시스템을 사용하면 다른 시스템이 될 것이라고 확신합니다. –

+0

그래서 높은 수준에서 SQL Server에서 스키마를 가져와야 할 것입니다. 또한 프로젝트에 합리적인 통합 테스트를 실행하기에 충분한 데이터가 포함 된 더 작은 버전의 데이터베이스 (50GB 이상)를 가져야한다고 생각합니다. 응답 주셔서 감사합니다! – sdanna

관련 문제