우리 팀은 데이터베이스에 충돌하고 결과를 확인하는 수백 가지의 통합 테스트를 수행합니다. 모든 통합 테스트에 대해 두 가지 기본 클래스가 있는데 하나는 검색 전용 테스트 용이고 하나는 생성/업데이트/삭제 테스트 용 클래스입니다. 검색 전용 기본 클래스는 TestFixtureSetup 동안 데이터베이스를 다시 생성하므로 테스트 클래스 당 한 번만 실행됩니다. CUD 기본 클래스는 각 테스트 전에 데이터베이스를 다시 생성합니다. 각 저장소 클래스에는 고유 한 해당 테스트 클래스가 있습니다.통합 테스트 모범 사례
당신이 상상할 수있는 것처럼,이 모든 일에는 꽤 시간이 걸립니다 (빨리 달리고 빠르게 성장하려면 7-8 분이 걸립니다). 이 작업을 CI (CruiseControl.Net)의 일부로 실행하는 것은 문제가되지 않지만 로컬에서 실행하는 것은 오랜 시간이 걸리고 실제로 코드를 커밋하기 전에 실행하는 것을 실제로 금지합니다.
제 질문은 이러한 유형의 통합 테스트 실행 속도를 높이는 데 도움이되는 모범 사례입니까?
우리는 sqlite에서 지원되지 않는 데이터베이스 특정 기능 (계산 된 열 등)을 사용하기 때문에 메모리 내에서 (la sqlite) 실행할 수 없습니다.
또한 팀 전체가 실행할 수 있어야하므로 SQL Server Express 또는 로컬 인스턴스에서 실행하면 연결 문자열이 모두 동일하지 않으면 오류가 발생할 수 있습니다.
귀하의 상점에서 이것을 어떻게 완성하고 있습니까?
감사합니다.
+1 그게 우리가 내 작업에서하는 일입니다. CIS에서는 단위 테스트가 하루에 한 번씩 모든 체크인 및 통합 테스트를 실행합니다. – mezoid
여기서 모든 빌드에서 통합 테스트를 실행합니다. 통합 테스트를 자주 실행할수록 좋습니다. –
@Ken_Liu - 물론입니다. CI 서버의 사용 가능한 CPU주기와 모멘트의 커밋 수를 비교하는 경우가 종종 있습니다. 이는 모든 개발 팀/환경에 따라 다릅니다. – grenade