데이터베이스 단위 테스트에 Transact-SQL 어설션 사용

데이터베이스 단위 테스트에서는 Transact-SQL 테스트 스크립트가 실행되어 결과를 반환합니다. 때로는 결과가 결과 집합으로 반환됩니다. 테스트 조건을 사용하여 결과의 유효성을 검사할 수 있습니다. 예를 들어 테스트 조건을 사용하여 특정 결과 집합에 반환된 행 수를 확인하거나 특정 테스트를 실행하는 데 걸린 시간을 확인할 수 있습니다. 테스트 조건에 대한 자세한 내용은 데이터베이스 단위 테스트에서 테스트 조건 사용을 참조하십시오.

테스트 조건을 사용하는 대신 Transact-SQL 어설션, 즉 Transact-SQL 스크립트의 RAISERROR 문을 사용할 수도 있습니다. 경우에 따라 테스트 조건 대신 Transact-SQL 어설션을 사용하는 것이 더 바람직할 수 있습니다.

Transact-SQL 어설션 사용

Transact-SQL 어설션을 사용하거나 테스트 조건을 사용하여 데이터 유효성을 검사하기 전에 다음 사항을 고려해야 합니다.

  • 성능. 먼저 데이터를 클라이언트 컴퓨터로 이동한 다음 로컬에서 조작하는 것보다 서버에서 Transact-SQL 어설션을 실행하는 것이 더 빠릅니다.

  • 언어 친숙성. 현재의 전문적 지식을 기반으로 특정 언어를 선호하여 Transact-SQL 어설션이나 C# 또는 Visual Basic 테스트 조건을 선택할 수도 있습니다.

  • 복잡한 유효성 검사. 일부 인스턴스에서는 C# 또는 Visual Basic보다 복잡한 테스트 유효성 검사를 빌드하여 클라이언트에서 테스트 유효성을 검사할 수 있습니다.

  • 레거시 유효성 검사 라이브러리. 유효성 검사를 수행하는 코드가 있으면 테스트 조건 대신 이 코드를 데이터베이스 단위 테스트에서 사용할 수 있습니다.

예상된 예외로 단위 테스트 메서드 표시

데이터베이스 단위 테스트 메서드를 예상된 예외로 표시하려면 다음 특성을 추가합니다.

<ExpectedSqlException(MessageNumber=nnnnn, Severity=x, MatchFirstError=false, State=y)> _
[ExpectedSqlException(MessageNumber=nnnnn, Severity=x, MatchFirstError=false, State=y)]

다음은 각 항목에 대한 설명입니다.

  • nnnnn은 예상된 메시지의 번호(예: 14025)입니다.

  • x는 예상된 예외의 심각도입니다.

  • y는 예상된 예외의 상태입니다.

지정되지 않은 매개 변수는 무시됩니다. 이러한 매개 변수를 데이터베이스 코드의 RAISERROR 문에 전달합니다. MatchFirstError를 true로 지정하면 이 특성은 예외의 SqlErrors와 일치합니다. 기본 동작(MatchFirstError = true)은 첫 번째로 발생하는 오류와만 일치하는 것입니다.

예상된 예외와 부정적 데이터베이스 단위 테스트를 사용하는 방법에 대한 예제를 보려면 연습: 데이터베이스 단위 테스트 생성 및 실행을 참조하십시오.

RAISERROR 문

Transact-SQL 스크립트에 RAISERROR 문을 사용하여 서버에서 직접 Transact-SQL 어설션을 사용할 수 있습니다. 해당 구문은 다음과 같습니다.

**RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState)**

다음은 각 옵션에 대한 설명입니다.

@ErrorMessage는 사용자 정의 오류 메시지입니다. printf_s 함수와 유사하게 이 메시지 문자열의 형식을 지정할 수 있습니다.

@ErrorSeverity는 0 – 18 사이의 사용자 정의 심각도 수준입니다.

참고

심각도 수준 값이 '0'과 '10'이면 데이터베이스 단위 테스트가 실패하지 않습니다. 테스트가 실패하도록 하려면 0 - 18 범위의 다른 값을 사용할 수 있습니다.

@ErrorState는 1 – 127 사이의 임의 정수입니다. 이 정수를 사용하여 코드의 여러 위치에서 발생하는 단일 오류 항목을 구분할 수 있습니다.

자세한 내용은 Microsoft 웹 사이트에서 SQL Server 온라인 설명서의 RAISERROR(Transact-SQL)를 참조하십시오. 데이터베이스 단위 테스트에서 RAISERROR를 사용하는 예제는 방법: 단일 트랜잭션 범위 내에서 실행되는 데이터베이스 단위 테스트 작성 항목을 참조하십시오.

참고 항목

작업

방법: 편집할 데이터베이스 단위 테스트 열기

개념

데이터베이스 단위 테스트에서 테스트 조건 사용

단위 테스트를 사용하여 데이터베이스 코드 확인