다음을 통해 공유


연습: 데이터베이스 단위 테스트 생성 및 실행

업데이트: 2007년 11월

이 연습에서는 간단한 T-SQL(Transact-SQL) 스크립트를 테스트하는 데이터베이스 단위 테스트를 만듭니다. 데이터베이스 단위 테스트를 만들려면 테스트할 데이터베이스에 대해 데이터베이스 프로젝트가 있어야 하며 없는 경우 만들어야 합니다. 또한 테스트를 통해 의미 있는 결과가 반환되도록 데이터베이스에는 데이터가 포함되어 있어야 합니다.

이 연습의 첫 번째 절차에서는 데이터베이스 프로젝트를 만들고 Northwind 데이터베이스의 스키마를 가져옵니다. 프로젝트를 만든 후에는 Orders 테이블의 열에 대해 데이터를 생성하도록 데이터 생성 계획을 만듭니다. 그런 다음 테스트를 포함할 프로젝트를 만들고 테스트를 작성한 다음 실행하여 스크립트가 제대로 작동하는지를 확인합니다.

사전 요구 사항

이 연습을 완료하려면 Northwind 데이터베이스가 설치되어 있는 데이터베이스 서버에 연결할 수 있어야 합니다.

데이터베이스 프로젝트를 만들려면

  1. 파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트를 클릭합니다.

    새 프로젝트 대화 상자가 나타납니다.

  2. 프로젝트 형식에서 데이터베이스 프로젝트 노드를 확장하고 Microsoft SQL Server를 클릭합니다.

  3. 템플릿 목록에서 SQL Server 2000 마법사를 클릭합니다.

  4. 이름 상자에 TestNorthwind를 입력합니다.

  5. 솔루션 목록에서 새 솔루션 만들기가 아직 강조 표시되어 있지 않은 경우 선택합니다.

  6. 솔루션용 디렉터리 만들기 확인란이 아직 선택되어 있지 않은 경우 선택합니다.

  7. 소스 제어에 추가 확인란이 아직 선택 취소되어 있지 않은 경우 선택 취소하고 확인을 클릭합니다.

    새 데이터베이스 프로젝트 마법사가 나타납니다. 다음에는 이 마법사를 사용하여 데이터베이스 프로젝트를 구성하고 초기 데이터베이스 스키마를 가져옵니다.

프로젝트를 구성하고 데이터베이스 스키마를 가져오려면

  1. 시작 페이지를 읽은 후 다음을 클릭합니다.

  2. Northwind 데이터베이스에는 하나의 스키마만 있으므로 개체 형식별로 내 프로젝트 구성을 클릭합니다.

    중요:

    프로젝트를 만든 다음에는 해당 구성을 변경할 수 없습니다.

  3. 데이터베이스 프로젝트에 만드는 개체에 사용할 기본 스키마를 지정하십시오.에서 기본값인 dbo를 적용합니다.

  4. 데이터베이스 옵션 설정 페이지에서 기본 설정을 그대로 사용하고 다음을 클릭합니다.

    참고:

    이러한 옵션은 프로젝트가 생성된 다음에 변경할 수 있습니다. 자세한 내용은 방법: 빌드 및 배포할 데이터베이스 프로젝트 구성을 참조하십시오.

  5. 데이터베이스 스키마 가져오기 페이지에서 기존 스키마 가져오기 확인란을 선택합니다.

  6. 소스 데이터베이스 연결에서 Northwind 데이터베이스를 포함하는 서버와 데이터베이스에 해당하는 연결을 클릭합니다. 연결이 아직 없는 경우 새 연결을 클릭하여 만듭니다. 연결을 지정하지 않으면 데이터베이스 프로젝트가 생성되지만 스키마를 가져오지 않습니다.

    참고:

    데이터베이스 프로젝트에 아직 데이터베이스 개체가 없는 경우 나중에 데이터베이스 스키마를 가져올 수 있습니다. 자세한 내용은 방법: 데이터베이스 스키마 가져오기를 참조하십시오.

  7. 기본 가져오기 옵션을 그대로 사용하고 다음을 클릭합니다.

  8. 빌드/배포 구성 페이지의 대상 연결에서 찾아보기 단추를 클릭하고 격리된 개발 환경을 만들 데이터베이스 서버에 대한 연결을 지정합니다.

    데이터베이스의 새 로컬 인스턴스를 만들려면 연결 속성 대화 상자의 서버 이름에 (local)을 입력하고 Windows 인증 사용을 클릭합니다. 확인을 클릭합니다.

  9. 대상 데이터베이스 이름에 이름이 아직 지정되어 있지 않은 경우 TestNorthwind를 입력합니다.

  10. 배포 데이터 정렬 기본값에서 서버의 데이터 정렬 사용을 클릭합니다.

    이 단계에서는 대상 데이터베이스에서 데이터베이스 프로젝트 데이터 정렬을 사용하도록 만듭니다.

  11. 데이터가 손실되면 증분 배포 차단 확인란의 선택을 취소합니다.

    격리된 개발 환경에 생성된 테스트 데이터만 포함되므로 데이터 손실이 발생하는 것을 허용할 수 있습니다.

  12. 마침을 클릭하여 데이터베이스 프로젝트를 만들고 데이터베이스를 가져옵니다.

결과 프로젝트를 검사하려면

  1. 솔루션 탐색기에서 TestNorthwind 노드를 확장하고 스키마 개체 자식 노드를 확장합니다.

  2. 계층에서 스키마 개체 노드 아래에 있는 하위 노드를 탐색합니다.

    솔루션 탐색기에는 개체를 가져온 데이터베이스의 스키마에 있는 개체를 정의하는 파일이 포함되어 있습니다.

  3. 보기 메뉴에서 다른 창을 클릭하고 스키마 뷰를 가리킵니다.

  4. 스키마 뷰에서 TestNorthwind 노드를 확장합니다.

  5. 계층 구조의 TestNorthwind 노드 아래에 있는 하위 노드를 탐색합니다.

    스키마 뷰에는 솔루션 탐색기에 나타나는 파일에 정의되어 있는 개체가 포함됩니다.

  6. 솔루션 탐색기에서 TestNorthwind 노드를 클릭합니다.

  7. 프로젝트 메뉴에서 TestNorthwind 속성을 클릭합니다.

  8. 속성 페이지에서 빌드 탭을 클릭합니다.

  9. 대상 데이터베이스 이름에 TestNorthwind를 입력합니다.

  10. 파일 메뉴에서 선택한 항목 저장을 클릭합니다.

  11. 솔루션 탐색기에서 TestNorthwind 프로젝트를 클릭합니다.

  12. 빌드 메뉴에서 솔루션 빌드를 클릭합니다.

  13. 빌드 메뉴에서 TestNorthwind 배포를 클릭합니다.

    참고:

    각 개발자는 자신의 데이터베이스 복사본을 호스팅할 데이터베이스 서버에 대한 연결 문자열을 지정해야 합니다.

다음에는 격리된 개발 데이터베이스를 실제 테스트 데이터로 채울 데이터 생성 계획을 지정합니다.

데이터 생성 계획을 만들려면

  1. 솔루션 탐색기에서 TestNorthwind 노드를 확장하고 데이터 생성 계획 폴더를 클릭합니다.

  2. 프로젝트 메뉴에서 새 항목 추가를 클릭합니다.

    새 항목 추가 대화 상자가 나타납니다.

  3. 템플릿 목록에서 데이터 생성 계획을 클릭합니다.

  4. 이름에 TestNW.dgen을 입력한 다음 추가를 클릭합니다.

    TestNW라는 데이터 생성 계획이 데이터베이스 프로젝트에 추가되고 편집기에서 열립니다. 데이터베이스 스키마를 데이터 생성 계획으로 가져오게 됩니다. 다음에는 해당 계획을 수정하여 보다 실제적인 테스트 데이터를 생성합니다.

Orders 테이블에 대한 데이터 생성 계획을 정의하려면

  1. 데이터 생성 계획에서 dbo.Orders를 클릭합니다.

  2. 데이터 메뉴에서 데이터 생성기를 가리키고 열 정보를 클릭합니다.

    열 정보 창이 나타나고 Orders 테이블의 열, 해당 데이터 형식, 각 열과 연결된 기본 생성기 및 생성기 결과가 표시됩니다.

  3. 열 정보 창에서 ShipCity를 클릭하고 생성기 필드를 데이터 바운드 생성기로 설정합니다.

    이 단계는 이 열을 쿼리 결과로 채울 것임을 나타냅니다.

  4. 보기 메뉴에서 속성 창을 클릭합니다.

  5. 속성 창에서 생성기 섹션으로 이동합니다. 연결 정보 속성에서 이전 절차를 통해 데이터베이스 스키마를 가져온 데이터베이스에 해당하는 연결을 클릭합니다.

    이 단계는 이 열에 대한 데이터를 생성하는 쿼리를 실행하는 데 사용할 데이터베이스 연결을 지정합니다.

  6. 속성 창의 생성기 섹션에 있는 쿼리 속성에서 쿼리 문자열을 SELECT * FROM Orders로 설정합니다.

    참고:

    시드 값은 변경하지 마십시오. 이 값은 이 연습의 뒷부분에서 사용할 Northwind 데이터베이스에서 특정 데이터를 생성하는 데 필요합니다.

  7. 열 정보 창에 있는 ShipCity의 생성기 출력 필드에서 [OutputTable1].[ShipCity]를 클릭합니다.

    이 단계는 이 열과 연결할 결과 집합의 열을 선택합니다.

  8. 데이터 생성 계획을 저장합니다.

    다음 단계에서는 이 데이터를 사용하는 데이터베이스 단위 테스트를 만듭니다.

데이터베이스 단위 테스트 만들기

데이터베이스 단위 테스트를 만들려면

  1. Visual Studio에서 테스트 메뉴를 열고 새 테스트를 클릭합니다.

    새 테스트 추가 대화 상자가 나타납니다.

  2. 데이터베이스 단위 테스트를 클릭합니다.

  3. 테스트 이름에 SampleUnitTest를 입력합니다.

  4. 테스트 프로젝트에 추가에서 새 Visual C# 테스트 프로젝트 만들기를 클릭하고 확인을 클릭합니다.

    새 테스트 프로젝트 대화 상자가 나타납니다.

  5. 새 테스트 프로젝트의 기본 이름을 그대로 두고 만들기를 클릭합니다.

    새 테스트 프로젝트가 기존 TestNorthwind 솔루션에 추가됩니다. 이 프로젝트에는 데이터베이스 단위 테스트의 새 테스트 클래스 코드가 있는 SampleUnitTest.cs라는 파일이 포함됩니다. 해당 테스트 클래스의 이름은 SampleUnitTest이며 여기에는 기본적으로 DatabaseTest1이라는 새 단위 테스트 메서드가 포함됩니다. 이 테스트 메서드의 이름을 그대로 두거나 보다 의미 있는 이름으로 변경할 수 있습니다. 테스트 메서드는 사용자 지정하여 대상 테스트 결과를 반환할 수 있습니다. 자세한 내용은 방법: 편집할 데이터베이스 단위 테스트 열기를 참조하십시오.

    프로젝트 'TestProject' 구성 대화 상자가 나타납니다.

  6. 데이터베이스 연결의 첫 번째 드롭다운 목록에서 TestNorthwind 데이터베이스를 선택합니다. 해당 이름이 <Server>TestNorthwind.dbo 형식으로 나타납니다. 이 이름이 나타나면 클릭하고 9단계로 이동합니다.

  7. TestNorthwind 데이터베이스가 나타나지 않는 경우 새 연결을 클릭합니다.

    연결 속성 대화 상자가 나타납니다.

  8. 연결 속성 대화 상자에서 TestNorthwind 데이터베이스가 있는 서버를 식별하고 사용할 인증 형식을 클릭합니다. 데이터베이스 이름 선택 또는 입력에 TestNorthwind를 입력하고 확인을 클릭하여 연결 속성 대화 상자를 닫습니다.

    참고:

    데이터베이스에 대한 연결을 설정하면 해당 이름이 데이터베이스 연결의 프로젝트 'TestProject' 구성 대화 상자에 나타납니다.

  9. 프로젝트 'TestProject' 구성 대화 상자에서 보조 데이터 연결을 사용하여 단위 테스트 유효성 검사 확인란을 선택합니다.

    참고:

    여기서는 두 연결 문자열 모두에 같은 값을 할당했습니다. 대부분의 경우 실행보다는 유효성 검사에 대한 권한이 더 높은 연결 문자열을 사용합니다. 자세한 내용은 연결 문자열 및 권한 개요를 참조하십시오.

  10. 단위 테스트를 실행하기 전에 테스트 데이터 생성 확인란을 선택합니다.

  11. 드롭다운 목록에서 TestNW 데이터 생성 계획을 클릭하고 확인을 클릭합니다. 이 데이터 생성 계획은 단위 테스트를 실행할 때 TestNorthwind 데이터베이스에 적용됩니다.

    참고:

    이 대화 상자를 사용하여 스키마 배포를 구성할 수도 있습니다. 자세한 내용은 방법: 데이터베이스 단위 테스트 실행 구성을 참조하십시오.

    프로젝트 'TestProject' 구성 대화 상자가 닫히면 데이터베이스 단위 테스트 디자이너가 표시됩니다.

    추가하는 각 테스트 조건에 대해 소스 코드 파일에 C# 또는 Visual Basic 코드가 생성됩니다.

  12. 솔루션 탐색기에서 테스트 프로젝트를 마우스 오른쪽 단추로 클릭하고 빌드를 클릭하여 해당 프로젝트를 빌드합니다.

  13. 데이터베이스 단위 테스트 디자이너의 탐색 모음에서 테스트 추가(+)를 클릭하여 다른 단위 테스트를 추가합니다.

    데이터베이스 테스트의 이름 지정 대화 상자가 나타납니다.

  14. 테스트 메서드의 기본 이름을 그대로 두고 확인을 클릭합니다. 그러면 기존 프로젝트에 다른 단위 테스트가 추가됩니다. 이 단위 테스트는 앞서 만든 SampleUnitTest 클래스 내의 새 테스트 메서드로 생성됩니다.

    이제 실제 테스트 논리를 작성할 준비가 되었습니다.

데이터베이스 단위 테스트를 작성하려면

  1. 데이터베이스 단위 테스트 디자이너의 탐색 모음에서 DatabaseTest1을 클릭하고 인접한 드롭다운 목록에서 Test가 선택되어 있는지 확인합니다. 그러면 DatabaseTest1 단위 테스트에서 테스트 작업의 테스트 스크립트를 만들 수 있습니다.

  2. T-SQL 편집기에서 다음 T-SQL 문을 추가합니다.

    SELECT * from Orders where ShipCity = 'Seattle'
    
  3. 테스트 조건 창에서 결과 불충분 유형의 테스트 조건을 클릭하고 테스트 조건 삭제(x)를 클릭하여 삭제합니다.

  4. 테스트 조건 창의 목록에서 행 개수를 클릭한 다음 테스트 조건 추가(+)를 클릭하여 행 개수 테스트 조건을 추가합니다.

  5. 속성 창에서 행 개수 속성을 1로 설정합니다.

  6. 파일 메뉴에서 모두 저장을 클릭합니다.

    이제 테스트를 실행할 준비가 되었습니다.

데이터베이스 단위 테스트를 실행하려면

  1. 테스트 메뉴에서 창을 가리킨 다음 테스트 뷰를 클릭합니다.

    테스트 뷰 창에는 두 가지 테스트가 나열됩니다. 이 연습의 앞부분에서는 DatabaseTest1이라는 테스트를 만들어 T-SQL 문과 테스트 조건을 추가했습니다. DatabaseTest2 테스트는 비어 있습니다.

  2. DatabaseTest1을 마우스 오른쪽 단추로 클릭하고 선택 영역 실행을 클릭합니다.

    Visual Studio Team System Database Edition에서는 권한 있는 컨텍스트를 사용하여 데이터베이스에 연결하고 데이터 생성 계획을 적용합니다. 그런 다음 Database Edition에서는 T-SQL 스크립트를 테스트에서 실행하기 전에 실행 컨텍스트로 전환합니다. 그런 후에 Database Edition에서는 T-SQL 스크립트의 결과를 테스트 조건에 지정된 스크립트와 비교하여 확인하고 결과(통과/실패 여부)를 테스트 결과 창에 표시합니다.

  3. 테스트 결과 창에서 결과를 확인합니다.

    테스트가 통과되면 SELECT 문을 실행하여 1개의 행이 반환된 것입니다.

    참고:

    데이터 생성 계획에서 [Orders][ShipCity]의 시드 값을 변경하거나 생성할 행 수를 변경하면 이 테스트가 실패할 수 있습니다. 시드 값 5를 사용하여 Northwind에서 50개 행의 데이터를 생성한 경우 반환되는 결과 중 하나에는 값이 Seattle인 ShipCity가 포함됩니다.

다음 단계

일반적인 프로젝트의 경우에는 모든 주요 데이터베이스 개체가 제대로 작동하는지 확인하기 위해 추가 단위 테스트를 정의합니다. 일련의 테스트가 완료되면 테스트를 팀과 공유할 수 있도록 버전 제어에 체크 인합니다.

기준을 지정한 후에는 데이터베이스 개체를 만들고 수정한 다음 연관된 테스트를 만들어 변경 내용으로 인해 기존 동작이 중단되는지 여부를 확인합니다.

참고 항목

작업

방법: 빈 데이터베이스 단위 테스트 만들기

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

개념

Database Edition의 용어 개요

기타 리소스

데이터베이스 단위 테스트 디자인

Visual Basic 또는 Visual C#에서 데이터베이스 단위 테스트 사용자 지정