MSTest 구성
MSTest(Microsoft Testing Framework)는 .NET 애플리케이션용 테스트 프레임워크입니다. 이를 통해 테스트를 작성 및 실행할 수 있으며 Visual Studio 및 Visual Studio Code 테스트 탐색기, .NET CLI 및 다양한 CI 파이프라인에 통합된 테스트 도구 모음을 제공할 수 있습니다.
MSTest는 GitHub에서 호스트되는 지원되는 모든 .NET 대상(.NET Framework, .NET Core, .NET, UWP, WinUI 등)과 함께 작동하는 완벽하게 지원되는 오픈 소스 플랫폼 간 테스트 프레임워크입니다.
Runsettings
.runsettings 파일을 사용하여 단위 테스트를 실행하는 방법을 구성할 수 있습니다. 플랫폼과 관련된 runsettings 및 구성에 대해 자세히 알아보려면 VSTest runsettings 설명서 또는 MSTest 실행기 runsettings 설명서를 확인합니다.
MSTest 요소
다음 runsettings 항목을 사용하면 MSTest의 동작 방식을 구성할 수 있습니다.
구성 | 기본값 | 값 |
---|---|---|
AssemblyCleanupTimeout | 0 | 어셈블리 정리 방법의 각 인스턴스에 적용할 시간 제한을 전체적으로 지정합니다. 어셈블리 정리 메서드에 지정된 [Timeout] 특성은 전역 제한시간을 재정의합니다. |
AssemblyInitializeTimeout | 0 | 어셈블리 초기화 메서드의 각 인스턴스에 적용할 시간 제한을 전역적으로 지정합니다. 어셈블리 초기화 메서드에 지정된 [Timeout] 특성은 전역 제한 시간을 재정의합니다. |
AssemblyResolution | false | 단위 테스트를 찾아서 실행하는 경우 추가 어셈블리에 대한 경로를 지정할 수 있습니다. 예를 들어 테스트 어셈블리와 동일한 디렉터리에 존재하지 않는 종속성 어셈블리에 대해 이러한 경로를 사용합니다. 경로를 지정하려면 디렉터리 경로 요소를 사용합니다. 경로는 환경 변수를 포함할 수 있습니다.<AssemblyResolution> <Directory path="D:\myfolder\bin\" includeSubDirectories="false"/> </AssemblyResolution> 이 기능은 .NET Framework 대상을 사용하는 경우에만 적용됩니다. |
CaptureTraceOutput | true | 현재 실행 중인 테스트에 연결될 Console.Write* , Trace.Write* 및 Debug.Write* API에서 오는 문자 메시지를 캡처합니다. |
ClassCleanupLifecycle | EndOfClass | 어셈블리 끝에서 클래스 정리가 수행되도록 하려면 EndOfAssembly로 설정합니다. (EndOfClass가 기본값이므로 MSTest v4부터 더 이상 지원되지 않으며 ClassCleanup 동작만 해당) |
ClassCleanupTimeout | 0 | 클래스 정리 메서드의 각 인스턴스에 적용할 제한 시간을 전역적으로 지정합니다. 클래스 정리 메서드에 지정된 [Timeout] 특성은 전역 시간 제한을 재정의합니다. |
ClassInitializeTimeout | 0 | 클래스 초기화 메서드의 각 인스턴스에 적용할 제한 시간을 전역적으로 지정합니다. 클래스 초기화 메서드에 지정된 [Timeout] 특성은 전역 시간 제한을 재정의합니다. |
DeleteDeploymentDirectoryAfterTestRunIsComplete | true | 테스트를 실행한 후 배포 디렉터리를 유지하려면 이 값을 false로 설정합니다. |
DeploymentEnabled | true | 값을 false로 설정하면 테스트 메서드에서 지정한 배포 항목이 배포 디렉터리에 복사되지 않습니다. |
DeployTestSourceDependencies | true | 테스트 원본 참조를 배포할지 여부를 나타내는 값입니다. |
EnableBaseClassTestMethodsFromOtherAssemblies | true | 상속하는 테스트 클래스와 다른 어셈블리의 기본 클래스에서 테스트 메서드를 검색할 수 있는지 여부를 나타내는 값입니다. |
ForcedLegacyMode | false | 이전 버전의 Visual Studio에서 MSTest 어댑터는 더욱 빠르고 확장성 가능하도록 최적화되었습니다. 테스트가 실행되는 순서와 같은 일부 동작은 이전 버전 Visual Studio처럼 정확하지 않을 수 있습니다. 이전 테스트 어댑터를 사용하려면 값을 true로 설정합니다. 예를 들어, 단위 테스트에 대해 app.config 파일을 지정한 경우 이 설정을 사용할 수 있습니다. 새 어댑터를 사용할 수 있도록 테스트를 리팩터링하는 것이 좋습니다. |
MapInconclusiveToFailed | false | 테스트가 불충분한 상태로 완료되는 경우 테스트 탐색기에서 건너뛴 상태로 매핑됩니다. 결과가 불충분한 테스트를 실패로 표시하려는 경우 값을 true로 설정합니다. |
MapNotRunnableToFailed | true | 실행할 수 없는 결과가 실패한 테스트에 매핑되는지 여부를 나타내는 값입니다. |
Parallelize | 병렬화 설정을 지정하는 데 사용됩니다. Workers: 병렬화에 사용할 스레드/작업자의 수이며, 기본적으로 현재 컴퓨터의 프로세서 수입니다. SCOPE: 병렬 처리의 범위입니다. MethodLevel로 설정할 수 있습니다. 기본적으로 ClassLevel입니다. <Parallelize><Workers>32</Workers><Scope>MethodLevel</Scope></Parallelize> |
|
SettingsFile | 여기에서 MSTest 어댑터와 함께 사용할 테스트 설정 파일을 지정할 수 있습니다. 설정 메뉴에서 테스트 설정 파일을 지정할 수도 있습니다. 이 값을 지정하면 ForcedLegacyMode도 true로 설정해야 합니다. <ForcedLegacyMode>true</ForcedLegacyMode> |
|
TestCleanupTimeout | 0 | 테스트 정리 방법의 각 인스턴스에 적용할 제한 시간을 전체적으로 지정합니다. 테스트 정리 메서드에 지정된 [Timeout] 특성은 전역 제한 시간을 재정의합니다. |
TestInitializeTimeout | 0 | 테스트 초기화 메서드의 각 인스턴스에 적용할 제한 시간을 전역적으로 지정합니다. 테스트 초기화 메서드에 지정된 [Timeout] 특성은 전역 시간 제한을 재정의합니다. |
TestTimeout | 0 | 지정된 전역 테스트 사례 시간 제한을 가져옵니다. |
TreatClassAndAssemblyCleanupWarningsAsErrors | false | 클래스 정리의 실패를 오류로 보려면 이 값을 true로 설정합니다. |
TreatDiscoveryWarningsAsErrors | false | 테스트 검색 경고를 오류로 보고하려면 이 값을 true로 설정합니다. |
ConsiderFixturesAsSpecialTests | false | AssemblyInitialize , AssemblyCleanup , ClassInitialize , ClassCleanup 를 Visual Studio 및 Visual Studio 코드 Test Explorer 및 .trx 로그에 개별 항목으로 표시하려면 이 값을 true로 설정합니다. |
TestRunParameter
요소
<TestRunParameters>
<Parameter name="webAppUrl" value="http://localhost" />
</TestRunParameters>
테스트 실행 매개 변수를 사용하면 런타임에 테스트에 제공되는 변수와 값을 정의할 수 있습니다. MSTest TestContext.Properties 속성을 사용하여 매개 변수에 액세스합니다.
private string _appUrl;
public TestContext TestContext { get; set; }
[TestMethod]
public void HomePageTest()
{
string _appUrl = TestContext.Properties["webAppUrl"];
}
테스트 실행 매개 변수를 사용하려면 공용 TestContext 속성을 테스트 클래스에 추가합니다.
예제 .runsettings 파일
다음 XML에는 일반적인 .runsettings 파일의 콘텐츠를 보여 줍니다. 이 코드를 복사하고 필요에 따라 편집합니다.
값에는 기본값이 있으므로 파일의 각 요소는 선택 사항입니다.
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<!-- Parameters used by tests at run time -->
<TestRunParameters>
<Parameter name="webAppUrl" value="http://localhost" />
<Parameter name="webAppUserName" value="Admin" />
<Parameter name="webAppPassword" value="Password" />
</TestRunParameters>
<!-- MSTest -->
<MSTest>
<MapInconclusiveToFailed>True</MapInconclusiveToFailed>
<CaptureTraceOutput>false</CaptureTraceOutput>
<DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>
<DeploymentEnabled>False</DeploymentEnabled>
<ConsiderFixturesAsSpecialTests>False</ConsiderFixturesAsSpecialTests>
<AssemblyResolution>
<Directory path="D:\myfolder\bin\" includeSubDirectories="false"/>
</AssemblyResolution>
</MSTest>
</RunSettings>
.NET