데이터베이스 단위 테스트에서 T-SQL 어설션 사용
업데이트: 2007년 11월
데이터베이스 단위 테스트에서는 T-SQL(Transact-SQL) 테스트 스크립트가 실행되고 결과를 반환합니다. 때로는 결과가 결과 집합으로 반환됩니다. 테스트 조건을 사용하여 결과의 유효성을 검사할 수 있습니다. 예를 들어 테스트 조건을 사용하여 특정 결과 집합에 반환된 행 수를 확인하거나 특정 테스트를 실행하는 데 걸린 시간을 확인할 수 있습니다. 테스트 조건에 대한 자세한 내용은 데이터베이스 단위 테스트에서 테스트 조건 사용을 참조하십시오.
테스트 조건을 사용하는 대신 T-SQL 어설션, 즉 T-SQL 스크립트의 RAISERROR 문을 사용할 수도 있습니다. 경우에 따라 테스트 조건 대신 T-SQL 어설션을 사용하는 것이 더 바람직할 수 있습니다.
T-SQL 어설션 사용
T-SQL 어설션을 사용하거나 테스트 조건을 사용하여 데이터 유효성을 검사하기 전에 다음 사항을 고려해야 합니다.
성능. 먼저 데이터를 클라이언트 컴퓨터로 이동한 다음 로컬에서 조작하는 것보다 서버에서 T-SQL 어설션을 실행하는 것이 더 빠릅니다.
언어 친숙성. 현재의 전문적 지식을 기반으로 특정 언어를 선호하여 T-SQL 어설션이나 C# 또는 Visual Basic 테스트 조건을 선택할 수도 있습니다.
복잡한 유효성 검사. 일부 인스턴스에서는 C# 또는 Visual Basic보다 복잡한 테스트 유효성 검사를 빌드하여 클라이언트에서 테스트 유효성을 검사할 수 있습니다.
레거시 유효성 검사 라이브러리. 유효성 검사를 수행하는 코드가 있으면 테스트 조건 대신 이 코드를 데이터베이스 단위 테스트에서 사용할 수 있습니다.
RAISERROR 문
T-SQL 스크립트에 RAISERROR 문을 사용하여 서버에서 직접 T-SQL 어설션을 사용할 수 있습니다. 해당 구문은 다음과 같습니다.
**RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState)**
다음은 각 매개 변수에 대한 설명입니다.
@ErrorMessage는 사용자 정의 오류 메시지입니다. printf_s 함수와 유사하게 이 메시지 문자열의 형식을 지정할 수 있습니다.
@ErrorSeverity는 0 – 18 사이의 사용자 정의 심각도 수준입니다.
참고: |
---|
심각도 수준 값이 '0'과 '10'이면 데이터베이스 단위 테스트가 실패하지 않습니다. 테스트가 실패하도록 하려면 0 - 18 범위의 다른 값을 사용할 수 있습니다. |
@ErrorState는 1 – 127 사이의 임의 정수입니다. 이 정수를 사용하여 코드의 여러 위치에서 발생하는 단일 오류 항목을 구분할 수 있습니다.
자세한 내용은 SQL Server 온라인 설명서의 "RAISERROR(Transact-SQL)"(https://msdn2.microsoft.com/ko-kr/library/ms178592.aspx)를 참조하십시오. 데이터베이스 단위 테스트에서 RAISERROR를 사용하는 예제는 방법: 단일 트랜잭션 범위 내에서 실행되는 데이터베이스 단위 테스트 작성 항목을 참조하십시오.