2010-08-11 5 views
2

.Net (C#)으로 코딩 할 때 NUnit과 Rhino Mock을 사용하여 테스트를 수행합니다. 많은 데이터베이스 코딩을하지 않았습니다 (Store Procs). 데이터베이스 코딩 (Store Procs)으로 어떻게 TDD를 할 수 있습니까?TDD 저장 프로 시저

답변

0

1) DB 개체를 가져 와서 복사본을 만들 수있는 프레임 워크가 있어야합니다. 이것은 파일 시스템에 저장된 테이블 정의를 포함하여 DB 소스 코드를 가지고있을 때 잘 작동합니다.

  • 임시 데이터베이스에 테이블 복사본. 등 인덱스 ..

  • 가능 임시 데이터베이스 테이블/기타라는 SP의 접두어로 모든 DB 이름 대신 저장된 프로 시저 또는 트리거의 사본 중 하나에서 복제 데이터가있는 테이블을 사전에이 채워 포함 그 다음에, BCP 입력 파일

2) 특정 테스트 데이터로 지정된 테스트 테이블을로드하는 구조를 가지고, 예를 들면, 저장된 테이블 (일부 필터를 사용하여) 또는 제조 데이터 세트가 존재하는 모든 다른 필요한 SP 클론/트리거 코드

3) 복제 된 저장된 procs를 실행하는 프레임 워크가 있고 데이터를 업데이트 할 경우 테이블에서 남겨진 데이터와 반환 된 결과를 모두 평가합니다.

풍미를주기 위해 작은 하위 집합으로 여기에 나열된 모든 기능을 포함하는 전체 TDD 시스템을 개발하고 배포하는 데 몇 달이 걸렸습니다.

포스트 그레스가 :

http://www.infoq.com/articles/tdd-dbpro-Foy


는 또한, 당신이 사용하는 한 반드시 특정 DB 백엔드의 producs가 없습니다 :


도 가능 일부 commertial 제품이 있습니다 : http://en.dklab.ru/lib/dklab_pgunit/


추가 독서 과제 :

MSDN http://msdn.microsoft.com/en-us/magazine/cc164243.aspx

http://tddbootcamp.com/2010/01/27/writing-tests-for-stored-procedures/

+0

감사합니다. DVK. 우리는 현재 Sybase를 사용하고 있습니다. Sybase 용 프레임 워크를 찾을 수 없었습니다. –

+0

우리는 Sybase에 있습니다. 그래서 우리는 우리 자신을 굴렸습니다 :) – DVK

1

당신이 SSDT 단위에서 이름 바꾸기 트릭을 사용할 수있는 SSDT 데이터베이스 프로젝트를 사용하는 경우는 당신이 귀하의 코드 진입 점을 모의 테스트 일반 C#. IoC가 아닌 사실이지만, 더 나은 것을 얻을 때까지 일을 끝내게됩니다.

나는 그것에 대해 글을 썼다 :

https://tangodude.wordpress.com/2014/02/08/ssdt-database-projects-mocking-database-objects-for-isolated-unit-testing-kind-of/

할 수 있습니다 자체에 SSDT보다 DI를 지원 개발을위한도 tSQLt.

http://tsqlt.org/user-guide/isolating-dependencies/