2013-03-28 3 views
3

좀 지속성 테스트를 작성하고 (여기에 근본적으로 오해 뭔가 내가 될 수있다)유창함 NHibernate에 단위 테스트

사전 조건 데이터베이스, 내 문제가에 대해 매핑을 확인하기 위해 노력하고있어

  1. 데이터베이스를 수동으로 생성 및 매핑 열 이름이 변경 될 때 업데이트해야
  2. 플럭스의 상태에 있습니다, 추가 또는 내가
  3. 을 테스트하는 동안 데이터베이스 자체에 영향을 미칠 싶지 않다
  4. 삭제

이상적으로는 현재 데이터베이스 스키마 (SQL 2008)를 가져 와서 메모리에 복제하고 싶습니다. 따라서 테스트를 마칠 때 SQL 데이터베이스가 손상되지 않도록 내 단위 테스트를 안전하게 수행 할 수 있습니다 그리고 변함이 없다.

SQLite In Memory를 사용하여 보았습니다.하지만 올바르게 이해하면 맵핑 파일을 기반으로 스키마가 생성됩니다. 매핑이 데이터베이스 자체에 대해 유효한지 확인하는 대신 내 SQL 2008 데이터베이스를 복제하는 방법은 무엇입니까? 많은 노력 없이도 SQLite에 스키마를 추가 할 수 있습니까? 아니면 테스트를 시작할 때 새로운 SQL 2008 데이터베이스를 구축하고 마지막 단계에서 데이터베이스를 해체해야합니까?

답변

0

실제 DB가 아닌 메모리 내 사본으로 작업하면 구현에 대해 다른 점이있을 것입니다.

  • 메모리 내장 복사본을 사용하면 논리 표현이 메모리 내에서 잘 작동한다는 것을 증명하는보다 빠른 통합 테스트가 수행됩니다. 어쩌면 매핑 목적으로 만 사용할 수도 있습니다.
  • 실제 DB를 사용하면 느린 통합 테스트가 수행되어 성능을 예측할 수 있으며 실제 논리와 잘 일치 함을 증명할 수 있습니다. 물론 각 테스트/픽스처 전후에 설정하고 되돌리기 위해 특별 테스트 DB가 필요합니다.

내 경험에 비추어 볼 때 제 2의 접근법은 통합 테스트에서 더 많은 가치를 제공하면서 단위 테스트를위한 모의 및 스텁을 통한 첫 번째 접근법을 사용했습니다.

희망이 도움이됩니다.

+1

필자는 빌드 스크립트의 일부로 데이터베이스를 재구성해야한다는 결론에 도달했습니다. 매핑과 데이터베이스가 매번 일치하는지 확인할 수있는 유일한 방법입니다. – Mauro