데이터베이스 단위 테스트 문제 해결

데이터베이스를 대상으로 단위 테스트를 수행할 때 이 항목에서 설명하는 문제가 발생할 수 있습니다.

  • 단위 테스트를 실행하거나 테스트 데이터를 생성할 때 권한 부족

  • 단위 테스트를 실행할 때 단위 테스트 및 App.Config 변경 내용이 무시됨

  • 단위 테스트를 실행할 때 데이터베이스가 예기치 않은 대상으로 배포됨

  • 데이터베이스 단위 테스트를 실행할 때 시간 초과

단위 테스트를 실행하거나 테스트 데이터를 생성할 때 권한 부족

단위 테스트를 구성하여 자동으로 데이터베이스를 배포하고 데이터를 생성할 수 있습니다. 대상 데이터베이스에 데이터를 생성할 수 있는 권한이 부족한 경우 데이터베이스에 연결할 수 있는 권한이 없다는 오류가 표시될 수 있습니다.

참고

이 문제를 해결하려면 데이터 생성 계획을 수동으로 실행합니다. 데이터를 생성할 수 있는 권한이 부족한 경우 이 방법을 통해 문제 해결에 도움이 되는 보다 자세한 오류 메시지를 확인할 수 있습니다.

단위 테스트를 실행할 때 단위 테스트 및 App.Config 변경 내용이 무시됨

테스트 프로젝트에서 App.Config 파일을 수정한 경우 테스트 프로젝트를 다시 빌드해야 변경 내용이 적용됩니다. 이러한 변경 내용에는 프로젝트 구성 대화 상자를 통해 App.Config에 변경한 내용이 포함됩니다. 테스트 프로젝트를 다시 빌드하지 않으면 단위 테스트를 실행할 때 변경 내용이 적용되지 않습니다.

단위 테스트를 실행할 때 데이터베이스가 예기치 않은 대상으로 배포됨

단위 테스트를 수행할 때 데이터베이스를 배포하면 단위 테스트 구성에 지정된 연결 문자열 정보를 사용하여 데이터베이스가 만들어집니다. 데이터베이스 프로젝트 빌드 속성에 지정된 연결 정보는 이 작업에 사용되지 않으므로 같은 데이터베이스의 여러 인스턴스를 대상으로 서로 다른 단위 테스트를 실행할 수 있습니다.

데이터베이스 단위 테스트를 실행할 때 시간 초과

시간이 초과되어 데이터베이스 단위 테스트가 실패하는 경우에는 데이터베이스 프로젝트의 app.config 파일을 업데이트하여 제한 시간을 늘릴 수 있습니다. 연결 문자열의 시간 제한은 단위 테스트가 서버에 연결할 때 대기하는 시간을 지정합니다. 또한 명령의 시간 제한은 단위 테스트가 Transact-SQL 스크립트를 실행할 때 대기하는 시간을 지정합니다.

참고

이 문제를 해결하려면 테스트 프로젝트의 app.config 파일에서 해당하는 Context 요소의 CommandTimeout 특성에 대해 더 큰 값을 지정합니다. 예를 들어 PrivilegedContext 요소에 대해 명령 시간 제한을 120초로 지정하려면 app.config를 다음과 같이 업데이트합니다.

<DatabaseUnitTesting>
    <DatabaseDeployment DatabaseProjectFileName="test.dbproj" Configuration="Debug" />
    <DataGeneration DataGenerationFileName="test.dgen" ClearDatabase="true" />
    <ExecutionContext Provider="System.Data.SqlClient" ConnectionString="another connection string" />
    <PrivilegedContext Provider="System.Data.SqlClient" ConnectionString="test" CommandTimeout="120" />
</DatabaseUnitTesting>

참고 항목

작업

방법: 함수, 트리거 및 저장 프로시저의 데이터베이스 단위 테스트 만들기

방법: 데이터베이스 단위 테스트 실행 구성