라이브 유닛 테스트 구성 및 사용

애플리케이션을 개발하는 동안 라이브 유닛 테스트는 백그라운드에서 영향을 받는 모든 유닛 테스트를 자동으로 실행하고 결과와 코드 커버리지를 실시간으로 표시합니다. 코드를 수정하면 실시간 단위 테스트는 변경 사항이 기존 테스트에 어떤 영향을 미쳤는지, 추가한 새 코드가 하나 이상의 기존 테스트에 포함되는지 여부에 대한 피드백을 제공합니다. 이 피드백은 버그를 수정하거나 새로운 기능을 추가할 때 단위 테스트를 작성하도록 알려줍니다.

테스트를 위해 Live Unit Testing을 사용하는 경우 테스트 상태에 대한 데이터가 보관됩니다. Live Unit Testing은 영구 데이터를 사용하여 코드 변경에 대한 응답으로 테스트를 동적으로 실행하는 동안 뛰어난 성능을 제공할 수 있습니다.

실시간 단위 테스트는 .NET Core 또는 .NET Framework를 대상으로 하는 프로젝트의 경우 Visual Studio 엔터프라이즈 버전에서만 사용할 수 있습니다.

지원되는 테스트 프레임워크

Live Unit Testing은 다음 테이블에 나열된 세 가지 인기 있는 단위 테스트 프레임워크를 사용합니다. 해당 어댑터와 프레임워크를 지원하는 최소 버전도 표시됩니다. 단위 테스트 프레임워크는 NuGet.org에서 모두 사용할 수 있습니다.

테스트 프레임워크 Visual Studio 어댑터 최소 버전 프레임워크 최소 버전
xUnit.net xunit.runner.visualstudio 버전 2.2.0-beta3-build1187 xunit 1.9.2
NUnit NUnit3TestAdapter 버전 3.5.1 NUnit 버전 3.5.0
MSTest MSTest.TestAdapter 1.1.4-미리 보기 MSTest.TestFramework 1.0.5-미리 보기

Microsoft.VisualStudio.QualityTools.UnitTestFramework를 참조하는 이전 MSTest 기반 테스트 프로젝트가 있고 최신 MSTest NuGet 패키지로 이동하지 않으려면 Visual Studio 2019 또는 Visual Studio 2017로 업그레이드하세요.

경우에 따라 라이브 유닛 테스트가 작동하려면 프로젝트에서 참조하는 NuGet 패키지를 명시적으로 복원해야 할 수 있습니다. 이때 다음 두 가지 방법을 사용할 수 있습니다.

  • 솔루션의 명시적 빌드를 수행하여 복원합니다. 최상위 Visual Studio 메뉴에서 빌드>솔루션 다시 빌드를 선택합니다.
  • 솔루션에서 패키지를 복원합니다. 솔루션을 마우스 오른쪽 버튼으로 클릭하고 NuGet 패키지 복원를 선택합니다.

구성

솔루션에 대한 라이브 유닛 테스트를 처음 시작하면 설정 마법사를 통해 라이브 유닛 테스트가 테스트를 빌드하고 실행하는 방식을 구성할 수 있습니다.

라이브 유닛 테스트가 중지된 경우 테스트>라이브 유닛 테스트>솔루션에 대한 라이브 유닛 테스트 구성으로 이동하여 설정 마법사를 열 수도 있습니다.

라이브 유닛 테스트가 실행되면 원본 리포지토리의 복사본인 작업 공간이 생성됩니다. 그런 다음 라이브 유닛 테스트는 Visual Studio에서 저장하지 않은 변경 사항을 작업 영역에 적용하고, 빌드를 수행하고, 테스트를 실행하고, 최신 코드 커버리지에 대해 보고합니다.

마법사를 사용하여 가장 먼저 구성해야 하는 것은 파일을 복사할 위치와 복사할 위치입니다.

Live Unit Testing 구성 마법사 페이지 1을 보여주는 스크린샷.

리포지토리 루트

리포지토리 루트는 라이브 유닛 테스트 작업 공간을 만들기 위해 복사할 폴더를 지정합니다. 리포지토리의 루트 폴더, 즉 모든 소스, 바이너리 및 도구가 포함되어야 합니다. 솔루션 파일이 리포지토리 루트 아래에 없는 경우 리포지토리 루트를 변경해야 할 수 있습니다.

워크스페이스 루트

작업 영역 루트는 라이브 유닛 테스트에서 리포지토리의 복제본을 보관하는 폴더를 지정합니다. 경로가 너무 길다는 것을 나타내는 예외에 주의하세요. 기본적으로 루트는 홈 폴더 아래에 생성됩니다. 그러나 예를 들어 일반적으로 C 드라이브 아래에 리포지토리를 만들어야 하는 경우 작업 공간 루트를 C:\lut\Repo와 같은 위치로 조정할 수 있습니다.

제외 파일 지정

모든 파일을 라이브 유닛 테스트 작업 공간에 복사해야 하는 것은 아닙니다. 일반 빌드가 라이브 유닛 테스트 빌드를 방해하지 않도록 빌드 중에 생성된 모든 아티팩트는 복사에서 제외해야 합니다. 또한 일반 nuget restore 명령이 라이브 유닛 테스트 nuget restore 명령을 방해하지 않아야 합니다.

기본적으로 라이브 유닛 테스트는 두 가지 파일 패턴 중 하나를 제외합니다:

  • Git 리포지토리의 경우 gitignore 파일에 지정된 파일은 라이브 유닛 테스트 작업 영역에 복사되지 않습니다.
  • Git 리포지토리가 아닌 경우, bin/obj/와 같은 기본 폴더 목록은 라이브 유닛 테스트 작업 공간에 복사되지 않습니다.

더 복잡한 리포지토리의 경우 자체 무시 파일을 지정해야 할 수도 있습니다. 마법사에서 "<Custom>" 옵션을 선택합니다. 다음을 선택하면 마법사를 완료한 후 Live Unit Testing이 생성하는 사용자 지정 무시 파일의 내용이 나타납니다. lutignore 파일입니다.

참고 항목

일부 Git 리포지토리의 경우 gitignore 파일로도 무시되는 파일을 확인할 수 있기 때문에 사용자 지정 lutignore 파일이 필요합니다. 사용자 지정 lutignore 파일이 없으면 라이브 유닛 테스트가 이러한 파일을 복사하지 않아 빌드 실패로 이어질 수 있습니다.

루티그노어 파일 구조

lutignore 파일은 gitignore 파일과 동일한 형식을 사용합니다. 빌드 중에 생성된 폴더 또는 파일이 작업 영역에 복사되지 않도록 일치하는 규칙을 포함해야 합니다. 대부분의 기본 프로젝트 템플릿의 경우 다음 무시 파일로 충분합니다:

[BB]IN
[OO]BJ
# WILL NOT COPY ANY BIN AND OBJ FOLDERS TO THE LIVE UNIT TESTING WORKSPACE

리포지토리에 하나의 빌드 폴더가 있는 경우 무시 파일에 해당 폴더가 대신 나열되어야 합니다:

[AA]RTIFACTS/
# WILL NOT COPY THE ARTIFACTS FOLDER TO THE LIVE UNIT TESTING WORKSPACE

리포지토리에 빌드 폴더에 다른 도구가 포함되어 있는 경우 이러한 도구는 일치하는 패턴 집합에서 제외해야 합니다:

[AA]RTIFACTS/
![AA]RTIFACTS/TOOLS/
# WILL NOT COPY THE ARTIFACTS FOLDER TO THE LIVE UNIT TESTING WORKSPACE
# HOWEVER IT WILL COPY THE TOOLS SUBFOLDER THAT MIGHT CONTAIN TOOLS AND UTILITIES

빌드 옵션

마법사 구성 페이지의 두 번째 부분은 빌드 옵션을 구성하는 곳입니다:

  • PDB 생성: 빌드 속도를 높이기 위해 라이브 유닛 테스트는 빌드 중에 PDB를 생성하지 않습니다. 이 심볼 파일을 사용하면 테스트 실패 시 스택 추적으로 이동할 수 있습니다.
  • 복수의 CPU 코어를 사용하여 빌드: 기본적으로 라이브 유닛 테스트는 여러 CPU 코어를 사용하여 빌드를 수행하므로 빌드 시간이 향상됩니다. 컴퓨터 속도가 느려지거나 여러 프로세서를 사용하여 솔루션 빌드에 실패하는 경우 이 옵션을 선택하지 마세요.

테스트 실행 옵션

마법사 구성 페이지의 마지막 부분에서는 테스트 실행 옵션을 설정합니다:

  • 테스트 케이스 시간 초과: 일부 테스트는 실행하는 데 시간이 오래 걸릴 수 있습니다. 이 필드를 설정하면 테스트가 특정 시간을 초과하는 경우 자동으로 실행이 중단됩니다. 테스트를 자동으로 취소할 수 있습니다.
  • 복수 프로세서 사용: 기본적으로 라이브 유닛 테스트는 실행 성능을 높이기 위해 여러 프로세서를 사용하려고 시도합니다. 컴퓨터 속도가 느려지거나 솔루션에서 테스트를 병렬로 실행할 수 없는 경우 이 옵션을 선택하지 마세요. 예를 들어 여러 테스트가 동일한 파일 경로에서 쓰기/읽기를 시도하는 경우 이러한 시나리오가 발생할 수 있습니다.

추가 구성

최상위 Visual Studio 메뉴 표시줄에서 도구>옵션를 선택하여 라이브 유닛 테스트를 구성합니다. 옵션 대화 상자의 왼쪽 창에서 라이브 유닛 테스트를 선택합니다.

라이브 유닛 테스트를 활성화한 후(라이브 유닛 테스트 시작, 일시 중지 및 중지 참조) 테스트>라이브 유닛 테스트>옵션을 선택하여 옵션 대화 상자를 열 수도 있습니다.

다음 이미지는 대화 상자에서 사용할 수 있는 라이브 유닛 테스트 구성 옵션을 보여줍니다.

Live Unit Testing 구성 옵션을 보여주는 스크린샷.

구성 가능한 옵션은 다음과 같습니다.

  • 솔루션이 빌드되어 디버깅될 때 Live Unit Testing을 일시 중지할지 여부

  • 시스템의 배터리 전원이 지정된 임계값 미만인 경우 Live Unit Testing을 일시 중지할지 여부

  • 모든 영구 데이터를 삭제하는 기능입니다. 이 기능은 라이브 유닛 테스트가 예측할 수 없거나 예기치 않은 방식으로 작동하여 지속 데이터가 손상된 경우에 유용합니다.

  • Live Unit Testing 프로세스에서 사용할 수 있는 최대 메모리 양입니다.

  • Live Unit Testing 출력 창에 기록된 정보 수준

    옵션에는 로깅되지 않음(없음), 오류 메시지만 해당(오류), 오류 및 정보 메시지(정보, 기본값) 또는 모든 세부 정보(자세한 정보 표시)가 포함됩니다.

    1 값을 VS_UTE_DIAGNOSTICS라는 사용자 수준 환경 변수에 할당하여 라이브 유닛 테스트 출력 창에 자세한 출력을 표시할 수도 있습니다. 그런 다음 Visual Studio를 다시 시작합니다.

    파일의 Live Unit Testing에서 자세한 MSBuild 로그 메시지를 캡처하려면 LiveUnitTesting_BuildLog 사용자 수준 환경 변수를 로그를 포함하는 파일 이름으로 설정합니다.

라이브 유닛 테스트를 위해 빌드 사용자 지정

더 복잡한 솔루션의 경우 빌드를 추가로 사용자 지정해야 할 수도 있습니다. 예를 들어 테스트 실행 중에 번역 파일을 빌드할 필요가 없을 수도 있습니다. 빌드 속도를 높이려면 실시간 단위 테스트에서 번역 파일 빌드를 비활성화할 수 있습니다. 프로젝트 파일을 조작하면 됩니다.

라이브 유닛 테스트 오버라이드 추가

솔루션에 "일반" 비계측 빌드에는 필요하지 않은 계측(라이브 유닛 테스트)을 위한 사용자 지정 단계가 필요한 경우, 프로젝트 또는 .targets 파일에 BuildingForLiveUnitTesting 속성을 확인하고 사용자 지정 사전/사후 빌드 단계를 수행하는 코드를 추가할 수 있습니다.

예를 들어 다음 샘플을 작성하여 라이브 유닛 테스트용으로만 실행되는 다른 대상을 추가할 수 있습니다:

<Target Name="GenerateNuGetPackages" BeforeTargets="AfterBuild" Condition="'$(BuildingForLiveUnitTesting)' == 'true'">
    <Exec Command='"$(MSBuildThisFileDirectory)..\tools\GenPac" '/>
</Target>

BuildingForLiveUnitTesting 속성을 사용하여 테스트 빌드에 실행되지 않아야 하는 일부 작업을 비활성화할 수 있습니다. 예를 들어, 라이브 유닛 테스트에서는 <RunAnalyzers>false</RunAnalyzers>을 설정하여 테스트에 대한 분석기를 비활성화합니다.

라이브 유닛 테스트 테스트 종속성

라이브 유닛 테스트 테스트 종속성 라이브 유닛 테스트는 테스트를 실행하는 별도의 폴더를 만듭니다. 이러한 배열을 사용하면 테스트가 실행되는 동안 빌드를 수행할 수 있지만 빌드 폴더의 모든 파일이 테스트 폴더로 복사되지는 않습니다.

일반적으로 두 가지 이유 중 하나로 테스트 종속성을 추가합니다:

  • 테스트가 소스 트리 아래의 파일에 종속된 경우. 예를 들어, 테스트는 resx 파일의 내용을 검사하거나 일부 구성 파일을 읽을 수 있습니다.
  • 테스트가 참조하는 일부 라이브러리에 의존합니다. 예를 들어, 테스트가 종속성으로 빌드된 실행 파일을 실행합니다.

참고 항목

테스트 종속성은 설정 마법사에서 저장소 루트로 지정된 디렉터리 내에 존재해야 합니다.

두 경우 모두 라이브 유닛 테스트는 테스트를 실행하기 위해 복사해야 하는 파일 수를 최소화하기 위해 기본적으로 이러한 파일을 복사하지 않습니다. 테스트 실행에 필요한 경우 LiveUnitTestingTestDependency 속성을 사용하여 이러한 파일을 명시적으로 지정해야 합니다. 예를 들어 다음과 같은 레이아웃이 있다고 가정해 보겠습니다:

SRC/
  CONSOLE_UTILITY/
  TEST_PROJECT/
ARTIFACTS/
  CONSOLE_UTILITY/NET472/DEBUG/
  TEST_PROJECT/NET472/DEBUG/

기본적으로 라이브 유닛 테스트로 이 프로젝트를 빌드하면 Artifacts/Test_Project만 테스트 폴더에 복사합니다. 소스 또는 콘솔 유틸리티를 테스트 폴더에 추가하려면 다음 샘플을 test_project.csproj에 추가합니다:

<LiveUnitTestingTestDependency Include=”$(RepoRoot)/Src/ConsoleUtility” />
<LiveUnitTestingTestDependency Include=”$(RepoRoot)/Artifacts/ConsoleUtility/net472/$(Configuration)/</LiveUnitTestingTestDependency” />

시작, 일시 중지 및 중지

라이브 유닛 테스트를 활성화하려면 최상위 Visual Studio 메뉴에서 테스트>라이브 유닛 테스트>시작을 선택합니다. Live Unit Testing을 사용하면 Live Unit Testing 메뉴에서 사용할 수 있는 옵션이 단일 항목에서 시작, 일시 중지중지로 변경됩니다.

  • 일시 중지는 Live Unit Testing을 일시적으로 중단합니다.

    라이브 유닛 테스트가 일시 중지되면 커버리지 시각화가 에디터에 나타나지 않지만 수집된 모든 데이터는 보존됩니다. 라이브 유닛 테스트를 다시 시작하려면 라이브 유닛 테스트 메뉴에서 계속를 선택합니다. 라이브 유닛 테스트는 일시 중지된 동안 수행된 모든 편집 내용을 따라잡고 글리프를 적절하게 업데이트하는 데 필요한 작업을 수행합니다.

  • 중지는 Live Unit Testing를 완전히 중지합니다. 라이브 유닛 테스트는 수집한 모든 데이터를 삭제합니다.

단위 테스트 프로젝트가 포함되지 않은 솔루션에서 라이브 유닛 테스트를 시작하면 라이브 유닛 테스트 메뉴에 PauseStop 옵션이 표시되지만 라이브 유닛 테스트는 시작되지 않습니다. 출력 창에는 "이 솔루션에서 참조하는 지원되는 테스트 어댑터가 없습니다."로 시작되는 메시지가 표시됩니다.

언제든지 Live Unit Testing을 일시적으로 또는 완전히 중지할 수 있습니다. 예를 들어 리팩토링 중인데 테스트가 잠시 중단될 것을 알고 있는 경우 이러한 조치를 취할 수 있습니다.

테스트 프로젝트 및 테스트 메서드 포함 및 제외

실시간 단위 테스트를 시작하면 실시간 단위 테스트 도구 창이 나타나고 실시간 단위 테스트로 테스트할 테스트 집합을 선택하라는 메시지가 표시됩니다.

Live Unit Testing이 처음 시작될 때 표시되는 도구 창을 보여주는 스크린샷.

단위 테스트를 실행하는 데 시간이 거의 걸리지 않는 소규모 솔루션의 경우 모든 테스트 포함를 선택하면 라이브 단위 테스트가 모든 테스트를 실행합니다.

테스트 프로젝트가 많은 대규모 솔루션의 경우 재생 목록을 편집하여 프로젝트의 프로젝트와 개별 메서드가 라이브 유닛 테스트에 참여할지 제어할 수 있습니다. 예를 들어 수백 개의 테스트 프로젝트를 포함한 솔루션을 구현하는 경우 Live Unit Testing에 참여할 테스트 프로젝트의 대상 집합을 선택할 수 있습니다.

라이브 유닛 테스트 재생 목록을 편집하여 실행할 라이브 유닛 테스트를 선택할 수 있으며, 이는 테스트 탐색기의 재생 목록과 같은 기능입니다.

라이브 유닛 테스트 재생 목록을 편집하는 방법에는 여러 가지가 있습니다:

  • 라이브 유닛 테스트 도구 창
  • 코드 에디터 창
  • 솔루션 탐색기
  • 프로그래밍 방식의 테스트 코드

라이브 유닛 테스트는 포함/제외 상태를 사용자 설정으로 저장하고 솔루션을 닫았다가 다시 열 때 이를 기억합니다.

라이브 유닛 테스트 도구 창

라이브 유닛 테스트 탭의 재생 목록 편집기를 사용하여 프로젝트, 네임스페이스 또는 클래스를 실행에 포함하거나 제외할 수 있습니다. 도구 창에서 재생 목록 편집를 선택합니다.

트리 뷰 요소를 선택하거나 지워 테스트를 포함하거나 제외할 수 있습니다. 예를 들어 단일 테스트를 선택하면 라이브 유닛 테스트가 변경 시 해당 테스트를 실행합니다. 클래스를 선택하면 해당 클래스의 모든 테스트가 실행되고 해당 클래스에 추가된 모든 새 테스트도 실행됩니다.

Live Unit Testing 재생 목록 편집기를 보여주는 스크린샷.

코드 에디터 창

코드 편집기 창을 사용하여 개별 테스트 메서드를 포함하거나 제외시킬 수 있습니다. 코드 편집기 창에서 테스트 메서드의 서명 또는 본문을 마우스 오른쪽 버튼으로 클릭하고 다음 옵션 중 하나를 선택합니다:

  • Live Unit Testing><선택한 메서드> 포함
  • Live Unit Testing><선택한 메서드> 제외
  • Live Unit Testing><선택한 메서드> 이외에 모든 메서드 제외

솔루션 탐색기

단위 테스트에서 개별 프로젝트를 선택하려면 라이브 단위 테스트가 시작된 후 다음 단계를 따르세요:

  1. 솔루션 탐색기에서 솔루션을 마우스 오른쪽 버튼으로 클릭하고 실시간 단위 테스트>제외를 선택하여 전체 솔루션을 제외합니다.
  2. 테스트에 포함할 각 테스트 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 라이브 유닛 테스트>포함를 선택합니다.

프로그래밍 방식의 테스트 코드

ExcludeFromCodeCoverageAttribute 특성을 적용하여 Live Unit Testing에서 해당 검사를 보고하지 않도록 메서드, 클래스 또는 구조를 프로그래밍 방식으로 제외할 수 있습니다.

Live Unit Testing에서 개별 메서드를 제외하려면 다음 특성을 사용합니다.

  • xUnit: [Trait("Category", "SkipWhenLiveUnitTesting")]
  • NUnit: [Category("SkipWhenLiveUnitTesting")]
  • MSTest: [TestCategory("SkipWhenLiveUnitTesting")]

다음 특성을 사용하여 Live Unit Testing에서 전체 테스트 어셈블리를 제외합니다.

  • xUnit: [assembly: AssemblyTrait("Category", "SkipWhenLiveUnitTesting")]
  • NUnit: [assembly: Category("SkipWhenLiveUnitTesting")]
  • MSTest: [assembly: TestCategory("SkipWhenLiveUnitTesting")]

검사 시각화 보기

라이브 유닛 테스트를 활성화하면 Visual Studio 에디터에서 각 코드 줄을 업데이트하여 작성 중인 코드가 유닛 테스트에 포함되는지 여부와 해당 테스트가 통과했는지 여부를 표시합니다.

다음 이미지에서는 테스트를 통과한 코드 줄과 실패한 코드 줄, 테스트에 포함되지 않은 코드 줄을 보여줍니다. 녹색 "✓"가 표시된 줄은 통과한 테스트에서만 커버됩니다. 빨간색 "X"가 있는 줄은 하나 이상의 실패한 테스트가 포함된 줄입니다. 파란색 "➖"가 표시된 줄은 어떤 테스트도 적용되지 않습니다.

Visual Studio의 코드 검사를 보여주는 스크린샷.

코드 편집기에서 코드를 수정하면 즉시 Live Unit Testing 검사 시각화가 업데이트됩니다. 편집을 처리하는 동안 다음 이미지와 같이 통과, 실패 및 적용되지 않은 기호 아래에 둥근 타이머 이미지를 추가하여 데이터가 최신 상태가 아님을 표시하도록 시각화가 변경됩니다.

타이머 아이콘이 있는 Visual Studio의 코드 검사를 보여주는 스크린샷.

테스트 상태에 대한 정보 가져오기

코드 창에서 통과 또는 실패한 기호 위로 마우스를 가져가면 해당 줄에 얼마나 많은 테스트가 있는지 확인할 수 있습니다. 개별 테스트의 상태를 보려면 기호를 선택합니다.

Visual Studio의 기호가 나타내는 테스트 상태를 보여주는 스크린샷.

이름 및 테스트 결과를 제공하는 것 외에도, 도구 설명을 통해 일련의 테스트를 다시 실행하고 디버깅할 수 있습니다. 도구 설명에서 하나 이상의 테스트를 선택하면 해당 테스트만 실행하거나 디버깅할 수도 있습니다. 이 작업을 사용하면 코드 창을 벗어나지 않고도 테스트를 디버깅할 수 있습니다.

디버깅 중일 때 이미 설정한 중단점을 관찰하는 것 외에도 디버거가 예기치 않은 결과를 반환하는 Assert 메서드를 실행하면 프로그램 실행이 일시 중지됩니다.

도구 설명에서 실패한 테스트를 마우스로 가리키면 다음 이미지와 같이 도구 설명이 확장되어 실패에 대한 자세한 정보를 제공합니다. 실패한 테스트로 바로 이동하려면 도구 설명에서 해당 테스트를 두 번 클릭합니다.

Visual Studio에서 실패한 테스트 도구 설명 정보를 보여 주는 스크린샷.

실패한 테스트로 이동하면 라이브 단위 테스트에서 메서드 시그니처에 해당 테스트가 시각적으로 표시됩니다:

  • 합격(녹색 "✓"와 함께 반쯤 채워진 비커로 표시됨).
  • 실패(빨간색 "🞩"과 함께 반쯤 채워진 비커로 표시).
  • 실시간 유닛 테스트에 참여하지 않음(파란색 "➖"와 함께 반쯤 채워진 비커로 표시).

비테스트 방법은 기호로 식별되지 않습니다. 다음 이미지에서는 네 가지 형식의 모든 메서드를 보여 줍니다.

통과 또는 실패 기호가 있는 Visual Studio의 테스트 메서드를 보여주는 스크린샷.

테스트 실패 진단 및 해결

실패한 테스트에서 제품 코드에 쉽게 디버깅하고 편집을 수행하며 애플리케이션을 계속 개발할 수 있습니다. Live Unit Testing이 백그라운드에서 실행되므로 디버그, 편집 및 진행 주기 동안 Live Unit Testing을 중지했다가 다시 시작할 필요는 없습니다.

예를 들어, 이전 이미지에 표시된 테스트 실패는 테스트 메서드에서 알파벳이 아닌 문자가 System.Char.IsLower 메서드로 전달될 때 true을 반환한다는 잘못된 가정으로 인해 발생했습니다. 테스트 메서드를 수정하면 모든 테스트가 통과합니다. Live Unit Testing을 일시 중지하거나 중지할 필요가 없습니다.

Live Unit Testing 창

테스트 탐색기와 비슷한 Live Unit Testing은 테스트 결과를 실행, 디버그 및 분석할 수 있게 해 주는 인터페이스를 제공합니다. Live Unit Testing을 사용하는 경우 테스트 탐색기에서 단위 테스트의 상태가 즉시 업데이트됩니다. 단위 테스트를 명시적으로 실행할 필요가 없습니다.

라이브 단위 테스트가 활성화되어 있지 않거나 중지된 경우 라이브 단위 테스트는 마지막으로 테스트가 실행된 단위 테스트의 상태를 표시합니다. Live Unit Testing을 다시 시작한 후에는 테스트를 다시 실행하려면 소스 코드를 변경해야 합니다.

라이브 유닛 테스트는 최상위 Visual Studio 메뉴에서 테스트>라이브 유닛 테스트>시작을 선택하여 시작할 수 있습니다. 보기>기타 창>라이브 유닛 테스트 창을 사용하여 라이브 유닛 테스트 창을 열 수도 있습니다.

라이브 유닛 테스트 창에서 일부 테스트가 페이드 아웃되는 것을 볼 수 있습니다. 예를 들어, 라이브 유닛 테스트를 중지했다가 다시 시작하면 다음 이미지와 같이 Live Unit Testing 창에서 모든 테스트가 페이드아웃됩니다.

테스트 결과가 페이드아웃되면 해당 테스트가 최신 라이브 유닛 테스트 실행의 일부가 아니었음을 나타냅니다. 테스트의 변경 사항이나 테스트 종속성이 검색된 경우에만 테스트가 실행됩니다. 변경 사항이 없으면 불필요하게 테스트가 실행되는 것을 방지합니다. 이 경우 회색으로 표시된 테스트 결과는 최신 실행의 일부가 아니더라도 여전히 '최신'입니다.

테스트 탐색기에서 페이드 아웃 테스트를 보여 주는 스크린샷.

흐리게 표시된 테스트를 다시 실행하려면 코드를 변경하면 됩니다.

Live Unit Testing이 테스트 결과를 자동으로 실행하고 업데이트는 것과 Test Explorer에서 테스트를 명시적으로 실행하는 것은 다릅니다. 이러한 차이점은 다음과 같습니다.

  • 테스트 탐색기 창에서 테스트를 실행하거나 디버깅하면 일반 바이너리가 실행됩니다. 라이브 유닛 테스트는 계측된 바이너리를 실행합니다.
  • 라이브 유닛 테스트는 테스트를 실행하기 위해 새 애플리케이션 도메인을 생성하지 않습니다. 대신 기본 도메인에서 테스트를 실행합니다. Test Explorer 창에서 테스트를 실행하면 새 애플리케이션 도메인을 만들지 않습니다.
  • Live Unit Testing은 테스트 어셈블리 각각에서 순차적으로 테스트를 실행합니다. 테스트탐색기 창에서 여러 테스트를 병렬로 실행하도록 선택할 수 있습니다.

라이브 단위 테스트 테스트 실행 취소

라이브 단위 테스트는 코드를 변경할 때마다 테스트를 계속 실행합니다. 실행이 진행 중인데 코드를 더 변경하면 라이브 유닛 테스트는 첫 번째 실행이 완료될 때까지 기다리는 동안 다른 실행을 대기열에 추가합니다.

파일을 저장할 때마다 라이브 유닛 테스트는 첫 번째 실행을 취소하고 대신 대기 중인 실행을 즉시 예약합니다. 이 프로세스는 첫 번째 실행을 완료하는 데 시간이 오래 걸리는 시나리오에 유용합니다.

참고 항목