테스트 탐색기를 사용하여 단위 테스트 실행

테스트 탐색기를 사용하여 Visual Studio 또는 타사 단위 테스트 프로젝트에서 단위 테스트를 실행합니다. 테스트를 범주로 그룹화하고 테스트 목록을 필터링하고 테스트 재생 목록을 만들고 저장하고 실행하기 위해 테스트 탐색기를 사용할 수 있습니다. 또한 테스트 탐색기를 사용하여 단위 테스트를 디버그하고 Visual Studio Enterprise에서 코드 검사를 분석할 수도 있습니다.

테스트 탐색기는 솔루션의 여러 테스트 프로젝트 및 프로덕션 코드 프로젝트의 일부인 테스트 클래스에서 테스트를 실행할 수 있습니다. 테스트 프로젝트에 서로 다른 단위 테스트 프레임워크를 사용할 수 있습니다. 테스트 중인 코드가 .NET용으로 작성된 경우 테스트 프로젝트는 대상 코드의 언어에 관계없이 .NET를 대상으로 하는 임의의 언어로 작성할 수 있습니다. 네이티브 C/C++ 코드 프로젝트는 C++ 단위 테스트 프레임워크를 사용하여 테스트해야 합니다.

테스트 프로젝트 빌드

Visual Studio 솔루션에서 아직 테스트 프로젝트를 설정하지 않은 경우 먼저 테스트 프로젝트를 만들고 빌드해야 합니다.

Visual Studio에는 관리 코드 및 네이티브 코드에 대한 Microsoft 단위 테스트 프레임워크가 있습니다. 그러나 테스트 탐색기도 테스트 탐색기 어댑터를 구현한 단위 테스트 프레임워크를 실행할 수 있습니다. 타사 단위 테스트 프레임워크를 설치하는 방법에 대한 자세한 내용은 타사 단위 테스트 프레임워크 설치를 참조하세요.

테스트 탐색기에서 테스트 실행

테스트 프로젝트를 빌드하면 테스트가 테스트 탐색기에 나타납니다. + 테스트 탐색기가 표시되지 않는 경우 Visual Studio 메뉴에서 테스트를 선택하고 창을 선택한 다음, 테스트 탐색기를 선택하거나 CtrlE, T를 누릅니다.

Test Explorer

Test Explorer

테스트를 실행, 작성 및 다시 실행할 때 테스트 탐색기에는 프로젝트, 네임스페이스클래스 기본 그룹화 형태로 결과가 표시됩니다. 테스트 탐색기의 테스트 그룹화 방식을 변경할 수 있습니다.

테스트 탐색기 도구 모음에서 테스트를 찾고 구성하고 실행하는 작업 중 많은 부분을 수행할 수 있습니다.

Run tests from the Test Explorer toolbar

Run tests from the Test Explorer toolbar

테스트 실행

솔루션의 모든 테스트, 그룹의 모든 테스트 또는 선택한 테스트 집합을 실행할 수 있습니다. 다음 중 하나를 수행합니다.

  • 솔루션의 모든 테스트를 실행하려면 모두 실행 아이콘을 선택하거나 Ctrl + R, V를 누릅니다.

  • 기본 그룹의 모든 테스트를 실행하려면 실행 아이콘을 선택한 다음, 메뉴에서 그룹을 선택합니다.

  • 실행할 개별 테스트를 선택하고 선택한 테스트에 대한 오른쪽 클릭 메뉴를 연 후 선택한 테스트 실행을 선택하거나 Ctrl + R, T를 누릅니다.

  • 개별 테스트에 종속성이 없어 임의 순서로 실행할 수 있는 경우 도구 모음의 설정 메뉴에서 병렬 테스트 실행을 켭니다. 이렇게 하면 모든 테스트를 실행하는 데 걸리는 시간을 훨씬 줄일 수 있습니다.

각 빌드 후 테스트 실행

각 로컬 빌드 후 단위 테스트를 실행하려면 테스트 탐색기 도구 모음에서 설정 아이콘을 열고 빌드 후 테스트 실행을 선택합니다.

테스트 결과 보기

테스트를 실행하고 작성하고 다시 실행하면 테스트 탐색기는 실패한 테스트, 통과한 테스트, 건너뛴 테스트실행하지 않은 테스트의 그룹에 결과를 표시합니다. 테스트 탐색기 아래쪽 또는 옆쪽의 세부 정보 창에 테스트 실행에 대한 요약이 표시됩니다.

테스트 정보 보기

개별 테스트의 정보를 보려면 해당 테스트를 선택합니다.

Test execution details

Test execution details

테스트 정보 창에는 다음 정보가 표시됩니다.

  • 테스트 메서드의 소스 파일 이름 및 줄 번호

  • 테스트의 상태입니다.

  • 테스트 메서드가 실행되는 데 걸린 시간

테스트가 실패할 경우 세부 정보 창에는 다음과 같은 정보도 표시됩니다.

  • 단위 테스트 프레임워크에서 테스트에 대해 반환된 메시지

  • 테스트 실패 시의 스택 추적

테스트 메서드의 소스 코드 보기

Visual Studio 편집기에서 테스트 메서드의 소스 코드를 표시하려면 테스트를 선택한 다음, 오른쪽 클릭 메뉴에서 테스트 열기를 선택하거나 F12 키를 누릅니다.

테스트 목록 그룹화 및 필터링

테스트 탐색기를 사용하면 미리 정의된 범주로 테스트를 그룹화할 수 있습니다. 테스트 탐색기에서 실행되는 대부분의 단위 테스트 프레임워크에서는 고유의 범주 및 범주/값 쌍을 정의하여 테스트를 그룹화할 수 있습니다. 또한 테스트 속성과 비교하여 일치하는 문자열을 찾아 테스트 목록을 필터링할 수도 있습니다.

테스트 목록에서 테스트 그룹화

테스트 탐색기를 사용하여 테스트를 계층 구조로 그룹화할 수 있습니다. 기본 계층 구조는 프로젝트, 네임스페이스, 클래스의 순으로 그룹화됩니다. Test Explorer group button테스트 구성 방식을 변경하려면 그룹화 방법 단추 테스트 탐색기 그룹 단추를 선택하고 새 그룹화 기준을 선택합니다.

Group tests by category in Test Explorer

계층 구조의 고유한 수준을 정의하고 그룹화 기준 옵션을 원하는 순으로 선택하여 상태클래스 등을 기준으로 그룹화할 수 있습니다.

Screenshot of the Visual Studio Test Explorer showing a test hierarchy in one pane and the Group By menu in the other with the Class and State options checked.

테스트 탐색기를 사용하여 테스트를 계층 구조로 그룹화할 수 있습니다. 기본 계층 구조는 프로젝트, 네임스페이스, 클래스의 순으로 그룹화됩니다. Test Explorer group button테스트 구성 방식을 변경하려면 그룹화 방법 단추 테스트 탐색기 그룹 단추를 선택하고 새 그룹화 기준을 선택합니다.

Group tests by category in Test Explorer

계층 구조의 고유한 수준을 정의하고 그룹화 기준 옵션을 원하는 순으로 선택하여 상태클래스 등을 기준으로 그룹화할 수 있습니다.

Screenshot of the Visual Studio Test Explorer showing a test hierarchy in one pane and the Group By menu in the other with the Class and State options checked.

테스트 탐색기 그룹

그룹 설명
기간 실행 시간을 기준으로 빠름, 보통, 느림으로 테스트를 그룹화합니다.
State(상태) 실행 결과를 기준으로 실패한 테스트, 건너뛴 테스트, 통과한 테스트로 테스트를 그룹화합니다.
대상 프레임워크 프로젝트의 대상 프레임워크별로 테스트를 그룹화합니다.
네임스페이스 포함된 네임스페이스별로 테스트를 그룹화합니다.
프로젝트 포함된 프로젝트별로 테스트를 그룹화합니다.
클래스 포함된 클래스별로 테스트를 그룹화합니다.

특성

특성(trait)은 일반적으로 범주 이름/값 쌍이지만 단일 범주일 수도 있습니다. 특성(trait)은 단위 테스트 프레임워크에서 테스트 메서드로 식별하는 메서드에 할당할 수 있습니다. 단위 테스트 프레임워크는 특성(trait) 범주를 정의할 수 있습니다. 특성(trait) 범주에 고유한 범주 이름/값 쌍을 정의하는 값을 추가할 수 있습니다. 특성(trait) 범주 및 값을 지정하는 구문은 단위 테스트 프레임워크에 의해 정의됩니다.

Microsoft 유닛 테스트 프레임워크의 관리 코드 관련 특성(trait)

관리되는 앱에 대한 Microsoft 단위 테스트 프레임워크에서 특성(trait) 이름/값 쌍을 TestPropertyAttribute 특성에 정의합니다. 테스트 프레임워크에는 다음과 같은 미리 정의된 특성(trait)이 있습니다.

특징 설명
OwnerAttribute 소유자 범주는 단위 테스트 프레임워크에 의해 정의되며, 소유자의 문자열 값을 제공해야 합니다.
PriorityAttribute 우선순위 범주는 단위 테스트 프레임워크에 의해 정의되며, 우선순위의 정수 값을 제공해야 합니다.
TestCategoryAttribute TestCategory 특성을 사용하면 단위 테스트의 범주를 지정할 수 있습니다.
TestPropertyAttribute TestProperty 특성을 사용하여 특성(trait) 범주/값 쌍을 정의할 수 있습니다.

Microsoft 단위 테스트 프레임워크의 C++ 관련 특성(trait)

Microsoft Unit Testing Framework for C++ 사용 방법을 참조하세요.

사용자 지정 재생 목록 만들기

실행하거나 그룹으로 보려는 테스트 목록을 만들어 저장할 수 있습니다. 재생 목록을 선택하면 목록의 테스트가 새 테스트 탐색기 탭에 표시됩니다. 두 개 이상의 재생 목록에 테스트를 추가할 수 있습니다.

재생 목록을 만들려면테스트 탐색기에서 하나 이상의 테스트를 선택합니다. 오른쪽 클릭 메뉴에서 재생 목록에 추가>새 재생 목록을 선택합니다.

Create a playlist

이 재생 목록을 한 번만 사용한 후 삭제하거나 재생 목록 창의 도구 모음에서 저장 단추를 클릭한 다음 이름 및 위치를 선택하여 재생 목록을 저장할 수 있습니다.

Playlist opens in separate test explorer tab

재생 목록을 만들려면테스트 탐색기에서 하나 이상의 테스트를 선택합니다. 마우스 오른쪽 단추를 클릭하고 재생 목록에 추가>새 재생 목록을 선택합니다.

재생 목록을 열려면 Visual Studio 도구 모음에서 재생 목록 아이콘을 선택하고 메뉴에서 이전에 저장된 재생 목록 파일을 선택합니다.

재생 목록을 편집하려면 테스트를 마우스 오른쪽 단추로 클릭하고 메뉴 옵션을 사용하여 재생 목록에서 추가하거나 제거할 수 있습니다.

Visual Studio 2019 버전 16.7부터 도구 모음에서 편집 단추를 선택할 수 있습니다. 재생 목록에서 포함 및 제외되는 테스트를 보여 주는 확인란이 테스트 옆에 표시됩니다. 원하는 대로 그룹을 편집합니다.

Edit Playlist button

계층 구조에서 부모 그룹의 확인란을 선택하거나 선택 취소할 수도 있습니다. 이 작업을 수행하면 항상 해당 그룹에 있는 테스트를 기준으로 재생 목록을 업데이트하는 동적 재생 목록이 만들어집니다. 예를 들어 클래스 옆에 확인 표시를 하면 해당 클래스에서 추가된 모든 테스트가 재생 목록에 포함됩니다. 해당 클래스에서 테스트를 삭제하면 테스트가 재생 목록에서 제거됩니다. 도구 모음에서 저장 단추를 사용하여 재생 목록을 저장하고 디스크에 생성된 .playlist 파일을 열어서 규칙을 자세히 알아볼 수 있습니다. 이 파일에는 재생 목록을 구성하는 모든 규칙 및 개별 테스트가 표시됩니다.

Playlist xml file

특성의 재생 목록을 만들려면 MSTest에 다음 형식을 사용합니다.

<Playlist Version="2.0">
	<Rule Name="Includes" Match="Any">
		<Property Name="Trait" Value="SchemaUpdateBasic" />
	</Rule>
</Playlist>

xUnit에는 다음 형식을 사용합니다. TestCategory 이름과 [Value] 사이에 공백이 있어야 합니다.

<Playlist Version="2.0">
  <Rule Name="Includes" Match="Any">
    <Rule Match="All">
      <Property Name="Solution" />
        <Rule Match="Any">
            <Property Name="Trait" Value="TestCategory [Value]" />
	    </Rule>
	</Rule>
  </Rule>
</Playlist>

실행하거나 그룹으로 보려는 테스트 목록을 만들어 저장할 수 있습니다. 재생 목록을 선택하면 목록의 테스트가 새 테스트 탐색기 탭에 표시됩니다. 두 개 이상의 재생 목록에 테스트를 추가할 수 있습니다.

재생 목록을 만들려면테스트 탐색기에서 하나 이상의 테스트를 선택합니다. 오른쪽 클릭 메뉴에서 재생 목록에 추가>새 재생 목록을 선택합니다.

Create a playlist

이 재생 목록을 한 번만 사용한 후 삭제하거나 재생 목록 창의 도구 모음에서 저장 단추를 클릭한 다음 이름 및 위치를 선택하여 재생 목록을 저장할 수 있습니다.

Playlist opens in separate test explorer tab

재생 목록을 만들려면테스트 탐색기에서 하나 이상의 테스트를 선택합니다. 마우스 오른쪽 단추를 클릭하고 재생 목록에 추가>새 재생 목록을 선택합니다.

재생 목록을 열려면 Visual Studio 도구 모음에서 재생 목록 아이콘을 선택하고 메뉴에서 이전에 저장된 재생 목록 파일을 선택합니다.

재생 목록을 편집하려면 테스트를 마우스 오른쪽 단추로 클릭하고 메뉴 옵션을 사용하여 재생 목록에서 추가하거나 제거할 수 있습니다.

Visual Studio 2019 버전 16.7부터 도구 모음에서 편집 단추를 선택할 수 있습니다. 재생 목록에서 포함 및 제외되는 테스트를 보여 주는 확인란이 테스트 옆에 표시됩니다. 원하는 대로 그룹을 편집합니다.

Edit Playlist button

계층 구조에서 부모 그룹의 확인란을 선택하거나 선택 취소할 수도 있습니다. 이 작업을 수행하면 항상 해당 그룹에 있는 테스트를 기준으로 재생 목록을 업데이트하는 동적 재생 목록이 만들어집니다. 예를 들어 클래스 옆에 확인 표시를 하면 해당 클래스에서 추가된 모든 테스트가 재생 목록에 포함됩니다. 해당 클래스에서 테스트를 삭제하면 테스트가 재생 목록에서 제거됩니다. 도구 모음에서 저장 단추를 사용하여 재생 목록을 저장하고 디스크에 생성된 .playlist 파일을 열어서 규칙을 자세히 알아볼 수 있습니다. 이 파일에는 재생 목록을 구성하는 모든 규칙 및 개별 테스트가 표시됩니다.

Playlist xml file

특성의 재생 목록을 만들려면 MSTest에 다음 형식을 사용합니다.

<Playlist Version="2.0">
	<Rule Name="Includes" Match="Any">
		<Property Name="Trait" Value="SchemaUpdateBasic" />
	</Rule>
</Playlist>

xUnit에는 다음 형식을 사용합니다. TestCategory 이름과 [Value] 사이에 공백이 있어야 합니다.

<Playlist Version="2.0">
  <Rule Name="Includes" Match="Any">
    <Rule Match="All">
      <Property Name="Solution" />
        <Rule Match="Any">
            <Property Name="Trait" Value="TestCategory [Value]" />
	    </Rule>
	</Rule>
  </Rule>
</Playlist>

테스트 탐색기 열

그룹은 특성, 스택 추적, 오류 메시지 및 정규화된 이름과 함께 테스트 탐색기에서 열로도 사용될 수 있습니다. 대부분의 열은 기본적으로 표시되지 않으며 표시되는 열과 표시되는 순서를 사용자 지정할 수 있습니다.

Screenshot of the Visual Studio Test Explorer showing a menu with Columns selected and a sub-menu with Duration, Traits, and Error Message selected.

테스트 열 필터링, 정렬, 다시 정렬

열을 필터링, 정렬 및 다시 정렬할 수 있습니다.

  • 특정 특성을 필터링하려면 특성 열의 맨 위에 있는 필터 아이콘을 클릭합니다.

    Column filter

  • 열의 순서를 변경하려면 열 머리글을 클릭하고 왼쪽 또는 오른쪽으로 끌어 놓습니다.

  • 열을 정렬하려면 열 머리글을 클릭합니다. 일부 열은 정렬할 수 없습니다. Shift 키를 누른 상태에서 추가 열 헤더를 클릭하여 보조 열을 기준으로 정렬할 수도 있습니다.

    Column sort

테스트 탐색기 열

그룹은 특성, 스택 추적, 오류 메시지 및 정규화된 이름과 함께 테스트 탐색기에서 열로도 사용될 수 있습니다. 대부분의 열은 기본적으로 표시되지 않으며 표시되는 열과 표시되는 순서를 사용자 지정할 수 있습니다.

Screenshot of the Visual Studio Test Explorer showing a menu with Columns selected and a sub-menu with Duration, Traits, and Error Message selected.

테스트 열 필터링, 정렬, 다시 정렬

열을 필터링, 정렬 및 다시 정렬할 수 있습니다.

  • 특정 특성을 필터링하려면 특성 열의 맨 위에 있는 필터 아이콘을 클릭합니다.

    Column filter

  • 열의 순서를 변경하려면 열 머리글을 클릭하고 왼쪽 또는 오른쪽으로 끌어 놓습니다.

  • 열을 정렬하려면 열 머리글을 클릭합니다. 일부 열은 정렬할 수 없습니다. Shift 키를 누른 상태에서 추가 열 헤더를 클릭하여 보조 열을 기준으로 정렬할 수도 있습니다.

    Column sort

테스트 목록 검색 및 필터링

테스트 탐색기 검색 필터를 사용하여 프로젝트에서 보고 실행하는 테스트 메서드를 제한할 수도 있습니다.

테스트 탐색기 검색 상자에 문자열을 입력하고 Enter 키를 선택하면 테스트 목록이 필터링되어 정규화된 이름에 문자열이 포함된 테스트만 표시됩니다.

다른 기준으로 필터링하려면

  1. 검색 상자 오른쪽에 있는 드롭다운 목록을 엽니다.

  2. 새 조건을 선택합니다.

  3. 필터 값을 따옴표 사이에 입력합니다. 포함하는 일치 대신 문자열에서 정확히 일치를 검색하려면 콜론(: ) 대신 등호(=)를 사용합니다.

Filter tests in Test Explorer

Filter tests in Test Explorer

참고 항목

검색은 대/소문자를 구분하지 않으며 지정된 문자열이 조건 값의 어느 부분에라도 일치하는지 확인합니다.

한정자 설명
State(상태) 테스트 탐색기 범주 이름에서 실패한 테스트, 건너뛴 테스트, 통과한 테스트등의 일치 항목을 검색합니다.
특성 특성(trait) 범주와 일치 항목의 값을 검색합니다. 특성(trait) 범주와 값을 지정하는 구문은 단위 테스트 프레임워크에 의해 정의됩니다.
정규화된 이름 테스트 네임스페이스, 클래스 및 메서드의 정규화된 이름에서 일치 항목을 검색합니다.
프로젝트 테스트 프로젝트 이름에서 일치 항목을 검색합니다.
대상 프레임워크 테스트 네임스페이스에서 일치 항목을 검색합니다.
네임스페이스 테스트 네임스페이스에서 일치 항목을 검색합니다.
클래스 테스트 클래스 이름에서 일치 항목을 검색합니다.

필터 결과의 하위 집합을 제외하려면 다음 구문을 사용합니다.

FilterName:"Criteria" -FilterName:"SubsetCriteria"

예를 들어 FullName:"MyClass" - FullName:"PerfTest"은 이름에 "PerfTest"가 들어 있는 경우를 제외하고 "MyClass"가 들어 있는 모든 테스트를 반환합니다.

단위 테스트 코드 검사 분석

Visual Studio Enterprise Edition에 제공되는 Visual Studio 코드 검사 도구를 사용하여 실제로 단위 테스트를 통해 테스트되는 제품 코드의 양을 결정할 수 있습니다. 솔루션의 선택된 테스트 또는 모든 테스트에 대해 코드 검사를 실행할 수 있습니다.

솔루션에서 테스트 메서드에 대한 코드 검사를 실행하려면

  • 테스트 탐색기에서 마우스 오른쪽 단추를 클릭하고 선택한 테스트에 대한 코드 검사 분석을 선택합니다.

코드 검사 결과 창에는 실행된 제품 코드 블록의 백분율이 줄, 함수, 클래스, 네임스페이스 및 모듈별로 표시됩니다.

자세한 내용은 코드 검사를 사용하여 테스트할 코드 범위 결정을 참조하세요.

바로 가기 테스트

테스트 코드 편집기에서 마우스 오른쪽 단추로 클릭하고 테스트 실행을 선택하거나 또는 Visual Studio에서 기본 테스트 탐색기 바로 가기를 사용하여 테스트 탐색기에서 테스트를 실행할 수 있습니다. 바로 가기 중 일부는 컨텍스트를 기반으로 합니다. 즉, 코드 편집기에서 커서가 있는 위치에 따라 테스트를 실행, 디버그 또는 프로파일 합니다. 커서가 테스트 메서드 내에 있는 경우 해당 테스트 메서드가 실행됩니다. 커서가 클래스 수준에 있는 경우 해당 클래스의 모든 테스트가 실행됩니다. 이는 네임스페이스 수준에 대해서도 동일합니다.

자주 사용하는 명령 바로 가기 키
TestExplorer.DebugAllTestsInContext Ctrl+R, Ctrl+T
TestExplorer.RunAllTestsInContext Ctrl+R, T
TestExplorer.RunAllTests Ctrl+R, A
TestExplorer.RepeatLastRun Ctrl+R, L

참고 항목

테스트는 추상 클래스에서 인스턴트화되지 않고 정의되기 때문에 추상 클래스에서 테스트를 실행할 수 없습니다. 추상 클래스에서 테스트를 실행하려면 추상 클래스에서 파생되는 클래스를 만듭니다.

테스트 오디오 큐

테스트 탐색기는 테스트 실행이 완료될 때 소리를 재생할 수 있습니다. 두 가지 소리가 있습니다. 하나는 테스트 실행이 모든 테스트를 통과하여 성공했음을 나타내며 다른 하나는 테스트 실행이 하나 이상의 테스트에 실패하고 완료되었음을 나타냅니다. 기본 Windows 11 소리 대화 상자에서 관련 소리를 설정할 수 있습니다. 해당 기능은 Visual Studio 2019 업데이트 16.9 미리 보기 3부터 사용할 수 있습니다.

  1. 기본 Windows 11 소리 대화 상자를 엽니다.
  2. 소리 탭으로 이동합니다.
  3. Microsoft Visual Studio 범주를 찾습니다. 테스트 실행 성공 또는 테스트 실행 실패를 선택하여 미리 설정된 소리를 선택하거나 고유한 오디오 파일로 이동합니다.
    Windows 11 sound dialog