다음을 통해 공유


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

데이터베이스에서 SQL Server 단위 테스트를 사용하는 경우 이 주제에서 문제가 발생할 수 있습니다.

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

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

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

단위 테스트를 실행할 때 데이터베이스 프로젝트에서 데이터베이스를 배포하는 경우 단위 테스트 구성에 지정된 연결 문자열 정보를 사용하여 데이터베이스가 배포됩니다. 데이터베이스 프로젝트 디버그 속성에 지정된 연결 정보는 이 작업에 사용되지 않으므로 동일한 데이터베이스의 서로 다른 인스턴스에 대해 SQL Server 단위 테스트를 실행할 수 있습니다.

데이터베이스 단위 테스트를 실행할 때 제한 시간이 있음

시간 제한으로 인해 데이터베이스 단위 테스트가 실패하는 경우 테스트 프로젝트에서 app.config 파일을 업데이트하여 시간 제한을 늘릴 수 있습니다. 연결 문자열에 정의된 연결 시간 제한은 단위 테스트가 서버에 연결할 때 대기할 시간을 정의합니다. app.config 파일에 직접 정의해야 하는 명령 제한 시간은 단위 테스트가 Transact-SQL 스크립트를 실행할 때 기다리는 시간을 지정합니다. 장기 단위 테스트에 문제가 있는 경우 적절한 컨텍스트 요소에서 명령 시간 제한 값을 늘려 보세요. 예를 들어 PrivilegedContext 요소에 대해 명령 제한 시간을 120초로 지정하려면 app.config를 다음과 같이 업데이트합니다.

<SqlUnitTesting_VS2010>  
    <DatabaseDeployment DatabaseProjectFileName="..\..\..\..\..\..\Visual Studio 2010\Projects\Database10\Database10\AdventureWorks.sqlproj"  
        Configuration="Debug" />  
    <DataGeneration ClearDatabase="true" />  
    <ExecutionContext Provider="System.Data.SqlClient" ConnectionString="Data Source=(LocalDB)\Projects;Initial Catalog=AdventureWorks_Test;Integrated Security=True;Pooling=False"  
        CommandTimeout="30" />  
    <PrivilegedContext Provider="System.Data.SqlClient" ConnectionString="Data Source=(LocalDB)\Projects;Initial Catalog=AdventureWorks_Test;Integrated Security=True;Pooling=False"  
        CommandTimeout="120" />  
</SqlUnitTesting_VS2010>  

참고 항목

방법: 함수, 트리거 및 저장 프로시저에 대한 SQL Server 단위 테스트 생성
방법: SQL Server 단위 테스트 실행 구성