단위 테스트 개요

업데이트: 2007년 11월

단위 테스트는 Visual C#, Visual Basic 또는 Visual C++로 작성되고 /clr:safe로 컴파일되는 프로그래밍 방식의 테스트입니다.

참고:

C++ 프로덕션 코드가 있는 단위 테스트를 사용하는 방법 및 C++로 작성된 단위 테스트를 사용하는 방법은 단위 테스트와 C++를 참조하십시오.

단위 테스트는 클래스 메서드를 직접 호출하고 해당 매개 변수를 전달하여 다른 소스 코드를 실행하는 데 사용됩니다. Assert 문을 포함하는 경우에는 생성되는 값을 예상 값과 비교하여 테스트할 수 있습니다. 단위 테스트 메서드는 소스 코드 파일에 저장되는 테스트 클래스에 있습니다.

테스트의 초기 소스 코드를 만드는 코드 생성 기능을 사용하여 단위 테스트를 만들 수도 있고 테스트 전체를 직접 작성할 수도 있습니다. 테스트 클래스 및 모든 테스트 메서드는 테스트 작성 방법에 관계없이 프로그래밍 방식 특성을 사용하여 식별됩니다.

각 테스트 클래스는 [TestClass()] 특성을 사용하여 표시됩니다. 각 단위 테스트는 [TestMethod()] 특성을 사용하여 표시되는 테스트 메서드입니다. 이러한 특성은 단위 테스트가 생성될 때 자동으로 할당됩니다. 단위 테스트를 직접 코딩하는 경우 클래스 및 메서드 특성을 직접 추가해야 합니다. 자세한 내용은 단위 테스트의 구조를 참조하십시오.

단위 테스트 생성

Visual Studio 도구 창을 통해 연결되는 대화 상자를 사용하여 단위 테스트를 생성할 수 있습니다. 각 단위 테스트는 C#, Visual Basic 또는 Visual C++ 메서드로 만들어집니다. 각 단위 테스트의 코드 및 특성은 테스트 프로젝트의 소스 파일에 있으며 같은 언어로 작성됩니다. 새 테스트는 테스트할 특정 코드를 대상으로 합니다. 개별 메서드에 대해 단일 단위 테스트를 생성하거나, 선택한 여러 메서드에 대해 여러 테스트를 생성하거나, 클래스 또는 네임스페이스에 있는 모든 메서드에 대해 여러 테스트를 생성할 수 있습니다.

단위 테스트는 현재 프로젝트의 소스 코드에서는 물론 소스 코드가 없는 경우에는 파일 시스템의 어셈블리에서도 생성할 수 있습니다.

새로 생성된 테스트의 코드는 정상적으로 컴파일되지만, 유용한 테스트 결과를 제공하려면 코드를 편집해야 합니다. 예를 들어 코드를 편집하여 변수를 할당하고 Assert 문을 사용자 지정할 수 있습니다. 생성된 단위 테스트에는 편집할 코드 줄을 나타내는 TODO 문이 포함되어 있습니다.

참고:

Team System 테스트 도구에서는 단위 테스트를 생성할 때 명명 규칙을 사용합니다. 예를 들어, 테스트할 코드를 포함하는 파일의 이름과 단어 "Test"를 연결하여 테스트 파일의 이름을 지정합니다(예: "Class1Test.cs"). 테스트 클래스 및 테스트 메서드의 이름도 기본값을 사용하여 생성됩니다. 이러한 기본값은 테스트 생성 설정 대화 상자에서 변경할 수 있습니다. 이 대화 상자는 단위 테스트 생성 대화 상자에서 구성을 클릭하여 열 수 있습니다.

자세한 내용은 방법: 단위 테스트 생성을 참조하십시오.

단위 테스트 작성

생성 기능을 사용하지 않고 단위 테스트를 직접 작성할 수도 있습니다. 이렇게 하는 가장 좋은 방법은 테스트 프로젝트에 단위 테스트를 추가하는 것입니다. 그러면 코드가 없는 스텁 테스트 메서드가 생성되지만 [TestMethod()] 특성이 적용됩니다. 테스트를 완료하려면 솔루션의 테스트 프로젝트에 있는 소스 파일에서 테스트를 편집해야 합니다. 자세한 내용은 방법: 단위 테스트 작성단위 테스트의 구조를 참조하십시오.

단위 테스트 프레임워크

단위 테스트 프레임워크에서는 단위 테스트를 융통성 있게 작성할 수 있는 다양한 Assert 클래스 및 기타 클래스를 추가로 제공합니다. 자세한 내용은 Microsoft.VisualStudio.TestTools.UnitTesting에서 단위 테스트 프레임워크의 네임스페이스 및 형식에 대한 설명서를 참조하십시오.

테스트 클래스 상속

테스트 클래스는 TestClass 특성으로 표시된 클래스입니다. 이제 테스트 클래스도 다른 테스트 클래스에서 멤버를 상속할 수 있습니다. 따라서 기본 테스트 클래스에서 재사용 가능한 테스트를 만들 수 있을 뿐 아니라 파생 테스트 클래스는 기본 테스트 클래스에서 테스트를 상속할 수 있습니다. 이러한 기능으로 테스트 코드가 중복되지 않으며 개발자는 프로덕션 코드에 대해 단위 테스트를 수행하는 과정에 융통성을 높일 수 있습니다.

테스트 클래스는 다른 어셈블리에 있는 클래스에서 상속할 수 없는데 이러한 제한은 다음과 같은 방법으로 해결할 수 있습니다.

  1. 기본 테스트 클래스를 소스 코드 파일에 정의하고 이 파일을 프로젝트 A에 추가합니다.

  2. 같은 코드 파일을 다른 프로젝트인 프로젝트 B에 추가합니다. 이렇게 하려면 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가와 기존 항목을 클릭한 후 기존 항목 추가 대화 상자에서 파일을 선택합니다.

  3. 프로젝트 B는 다른 어셈블리에 빌드되지만 기본 테스트 클래스가 포함되어 있습니다. 따라서 프로젝트 B의 다른 테스트 클래스는 기본 테스트 클래스에서 상속할 수 있습니다.

상속 예제

프로덕션 코드에 Microsoft SQL Server 백엔드를 사용하는 구현과 Oracle을 사용하는 구현이 하나씩 있습니다. 두 구현 모두 동일한 방식으로 작동해야 합니다. 또한 표준 테스트 코드가 들어 있는 DBTestSuite라는 추상 테스트 클래스를 만들 수 있습니다. 그런 다음 DBTestSuite에서 파생되는 SQLTestSuite 및 OracleTestSuite라는 두 개의 클래스를 만들 수 있습니다. 파생 클래스에서는 추상 Connect 메서드만 구현하면 됩니다. 그러면 테스트 클래스 하나는 Microsoft SQL Server에 연결되고 다른 하나는 Oracle에 연결됩니다.

또한 SQLTestSuite에서 파생되는 EmptySQLTestSuite 테스트 클래스를 만들어 빈 Microsoft SQL Server 데이터베이스를 테스트할 수 있습니다. 성능을 높이기 위해 빈 데이터베이스를 테스트하는 데 적합하지 않은 특정 테스트 메서드를 재정의할 수 있습니다.

테스트 클래스 상속을 사용하는 경우 테스트 뷰 창과 테스트 목록 편집기에서 기본 클래스와 자식 클래스 모두에 테스트 메서드가 표시됩니다. 테스트 대상 클래스를 확인하려면 테스트 목록 편집기에서 클래스 이름 또는 전체 클래스 이름 열을 표시합니다. 자세한 내용은 방법: 테스트 뷰 사용자 지정을 참조하십시오.

전용 메서드 테스트

단위 테스트를 사용하면 공용 메서드뿐만 아니라 전용 메서드도 테스트할 수 있습니다. 공용 메서드와 마찬가지로 전용 메서드에 대한 단위 테스트도 테스트하려는 코드에서 테스트를 생성할 때 자동으로 만들어집니다. 자세한 내용은 방법: 전용 메서드 테스트전용 접근자 사용을 참조하십시오.

특수한 종류의 단위 테스트

다음 표에는 추가 단위 테스트 종류가 나와 있습니다.

단위 테스트 종류

설명

데이터 기반 단위 테스트

데이터 기반 단위 테스트는 데이터 소스의 각 행에 대해 반복적으로 호출되도록 구성하는 단위 테스트입니다. 각 행의 데이터는 후속 테스트 실행의 입력 데이터로 사용할 수 있습니다. 자세한 내용은 데이터 기반 단위 테스트 개요를 참조하십시오.

ASP.NET단위 테스트

ASP.NET 단위 테스트는 페이지 요청에 응답하는 ASP.NET 응용 프로그램 코드를 검사하는 데 사용됩니다. ASP.NET 단위 테스트는 테스트 대상 ASP.NET 응용 프로그램 내에서 실행됩니다. 자세한 내용은 ASP.NET 단위 테스트 개요를 참조하십시오.

스마트 장치 단위 테스트

스마트 장치 단위 테스트는 스마트 장치 또는 에뮬레이터에서 스마트 장치 호스트 프로세스에 따라 실행하는 단위 테스트입니다. 자세한 내용은 스마트 장치 단위 테스트 개요을 참조하십시오.

웹 서비스 단위 테스트

웹 서비스 단위 테스트에 대한 자세한 내용은 웹 서비스 테스트를 참조하십시오.

참고 항목

개념

단위 테스트의 구조

단위 테스트와 C++

데이터 기반 단위 테스트 작업

기타 리소스

ASP.NET 단위 테스트 작업

스마트 장치 단위 테스트 작업

테스트 관리

테스트 실행

테스트 결과 분석