데이터베이스 로직을 어떻게 단위 테스트합니까?


12

TDD와 관련하여 여전히 작은 문제를 극복하는 데 문제가 있습니다.

데이터 계층 (linq2SQL)에서 필터링 된 특정 레코드 세트를 가져 오는 메소드가 필요합니다. DBML에서 생성 된 linq 생성 클래스를 사용하고 있습니다. 이제 문제는 이것에 대한 테스트를 작성하고 싶다는 것입니다.

내가 할 :

a) 먼저 테스트에 레코드를 삽입 한 다음 메소드를 실행하고 결과를 테스트하십시오.

b) 데이터베이스에있을 수있는 데이터를 사용하십시오. 이 논리에 치중하지 않으면 물건이 파손될 수 있습니다.

c) 당신은 무엇을 제안합니까?

답변:


7

(a)의 변형.

테스트에 사용할 수있는 테스트 db 또는 db의 하위 섹션이 있어야합니다. 테스트를 설정할 때 테스트를 시작하는 데 필요한대로 DB를 초기화하는 루틴이 있어야합니다 (각 테스트 전에 적절하게 수행 할 수 있음). 여기에는 데이터 삭제, 데이터 삽입 등이 포함될 수 있습니다. 그런 다음 테스트를 실행하십시오. Teardown 단계에서 스스로 정리하십시오. 라이브 시스템을 방해 할 위험없이 필요한만큼 반복 할 수 있습니다 (다른 데이터베이스에 필요한 데이터를 사용하여 테스트하는 것은 좋지 않습니다).


1
좋은 대답입니다. sqlite를 사용하여 폐기 데이터베이스를 만들고 싶습니다. 데이터베이스 구현과 관련된 사항 (예 : 트리거 등)을 테스트하려는 경우 가능하지 않지만 빠르고 무해한 설정 / 해제를 허용합니다.
bogeymin

1
@bogeymin-원하는 경우 트리거로 테스트 DB를 설정할 수 있습니다 (FixtureSetup 동안 스크립트를 사용하여 전체 DB를 만들 수 있음)
Yaakov Ellis
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.