.runsettings 파일을 사용하여 단위 테스트 구성Configure unit tests by using a .runsettings file

.runsettings 파일을 사용하여 Visual Studio의 단위 테스트를 구성할 수 있습니다.Unit tests in Visual Studio can be configured by using a .runsettings file. 예를 들어, 테스트가 실행되는 .NET Framework 버전, 테스트 결과 디렉터리 또는 테스트 실행 중에 수집되는 데이터를 변경할 수 있습니다.For example, you can change the .NET Framework version on which the tests are run, the directory for the test results, or the data that's collected during a test run.

참고

확장명으로 '.runsettings'를 사용하면 파일 이름은 아무런 상관이 없습니다.The file name doesn't matter, as long as you use the extension '.runsettings'.

특별한 구성이 필요하지 않으면 .runsettings 파일이 필요하지 않습니다.If you don't require any special configuration, you don't need a .runsettings file. .runsettings 파일은 코드 검사 분석을 사용자 지정할 때 가장 자주 사용됩니다.The most common use of a .runsettings file is to customize Code coverage analysis.

테스트 사용자 지정Customize tests

  1. XML 파일을 Visual Studio 솔루션에 추가하고 이름을 test.runsettings로 바꿉니다.Add an XML file to your Visual Studio solution and rename it to test.runsettings.

  2. 다음에 나오는 예제에서 파일 내용을 XML 양식으로 바꾸고 필요에 따라 사용자 지정합니다.Replace the file contents with the XML from the example that follows, and customize it as needed.

  3. 테스트 메뉴에서 테스트 설정 > 테스트 설정 파일 선택을 차례로 선택합니다.On the Test menu, choose Test Settings > Select Test Settings File.

솔루션에 .runsettings 파일을 두 개 이상 만들고 테스트 설정 메뉴를 사용하여 다른 시간에 사용하거나 사용하지 않도록 설정할 수 있습니다.You can create more than one .runsettings file in your solution, and enable or disable them at different times by using the Test Settings menu.

실행 설정 파일 사용

예제 .runsettings 파일Example .runsettings file

다음은 일반적인 .runsettings 파일입니다.Following is a typical .runsettings file. 모든 값에는 기본값이 있으므로 파일의 각 요소는 선택 사항입니다.Each element of the file is optional, because every value has a default.

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <!-- Configurations that affect the Test Framework -->
  <RunConfiguration>
    <MaxCpuCount>1</MaxCpuCount>
    <!-- Path relative to solution directory -->
    <ResultsDirectory>.\TestResults</ResultsDirectory>

    <!-- x86 or x64
      - You can also change it from menu Test, Test Settings, Default Processor Architecture -->
    <TargetPlatform>x86</TargetPlatform>

    <!-- Framework35 | [Framework40] | Framework45 -->
    <TargetFrameworkVersion>Framework40</TargetFrameworkVersion>

    <!-- Path to Test Adapters -->
    <TestAdaptersPaths>%SystemDrive%\Temp\foo;%SystemDrive%\Temp\bar</TestAdaptersPaths>

     <!--TestSessionTimeout is only available with Visual Studio 2017 version 15.5 and higher -->
     <!-- Specify timeout in milliseconds. A valid value should be greater than 0 -->
     <TestSessionTimeout>10000</TestSessionTimeout>
  </RunConfiguration>

  <!-- Configurations for data collectors -->
  <DataCollectionRunSettings>
    <DataCollectors>
      <DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
        <Configuration>
          <CodeCoverage>
            <ModulePaths>
              <Exclude>
                <ModulePath>.*CPPUnitTestFramework.*</ModulePath>
              </Exclude>
            </ModulePaths>

            <!-- We recommend you do not change the following values: -->
            <UseVerifiableInstrumentation>True</UseVerifiableInstrumentation>
            <AllowLowIntegrityProcesses>True</AllowLowIntegrityProcesses>
            <CollectFromChildProcesses>True</CollectFromChildProcesses>
            <CollectAspDotNet>False</CollectAspDotNet>

          </CodeCoverage>
        </Configuration>
      </DataCollector>

      <!--Video data collector is only available with Visual Studio 2017 version 15.5 and higher -->
      <DataCollector uri="datacollector://microsoft/VideoRecorder/1.0" assemblyQualifiedName="Microsoft.VisualStudio.TestTools.DataCollection.VideoRecorder.VideoRecorderDataCollector, Microsoft.VisualStudio.TestTools.DataCollection.VideoRecorder, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" friendlyName="Screen and Voice Recorder">
      </DataCollector>

    </DataCollectors>
  </DataCollectionRunSettings>

  <!-- Parameters used by tests at runtime -->
  <TestRunParameters>
    <Parameter name="webAppUrl" value="http://localhost" />
    <Parameter name="webAppUserName" value="Admin" />
    <Parameter name="webAppPassword" value="Password" />
  </TestRunParameters>

  <!-- Adapter Specific sections -->

  <!-- MSTest adapter -->
  <MSTest>
    <MapInconclusiveToFailed>True</MapInconclusiveToFailed>
    <CaptureTraceOutput>false</CaptureTraceOutput>
    <DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>
    <DeploymentEnabled>False</DeploymentEnabled>
    <AssemblyResolution>
      <Directory Path="D:\myfolder\bin\" includeSubDirectories="false"/>
    </AssemblyResolution>
  </MSTest>

</RunSettings>

.runsettings 파일도 코드 검사 분석을 구성하는 데 사용됩니다.The .runsettings file is also used to configure Code coverage analysis.

이 아티클의 나머지 부분은 파일 콘텐츠에 대해 설명합니다.The remainder of this article describes the file content.

.runsettings 파일을 편집합니다.Edit your .runsettings file

다음 섹션은 .runsettings 파일의 요소에 대해 자세히 설명합니다.The sections that follow detail the elements of a .runsettings file.

테스트 실행 구성Test run configuration

노드Node 기본Default Values
ResultsDirectory 테스트 결과가 배치될 디렉터리입니다.The directory where test results are placed.
TargetFrameworkVersion Framework40Framework40 Framework35, Framework40, Framework45Framework35, Framework40, Framework45

이 설정은 테스트를 검색하고 실행하는 데 사용할 단위 테스트 프레임워크의 버전을 지정합니다.This setting specifies which version of the unit test framework is used to discover and execute the tests. 이 버전은 단위 테스트 프로젝트의 빌드 속성에 지정하는 .NET 플랫폼의 버전과 다를 수 있습니다.It can be different from the version of the .NET platform that you specify in the build properties of the unit test project.
TargetPlatform x86x86 x86, x64x86, x64
TreatTestAdapterErrorsAsWarnings Falsefalse false, truefalse, true
TestAdaptersPaths TestAdapters가 있는 디렉터리에 대한 하나 또는 여러 경로One or multiple paths to the directory where the TestAdapters are located
MaxCpuCount 11 이 설정은 단위 테스트를 실행하는 경우 시스템에서 사용 가능한 코어를 사용하여 병렬 테스트 실행의 정도를 제어합니다.This setting controls the degree of parallel test execution when running unit tests, using available cores on the machine. 테스트 실행 엔진이 사용 가능한 각 코어에서 별도의 프로세스로 시작되며, 실행할 테스트가 있는 컨테이너를 각 코어에 제공합니다.The test execution engine starts as a distinct process on each available core, and gives each core a container with tests to run. 컨테이너는 어셈블리, DLL 또는 관련 아티팩트일 수 있습니다.A container can be an assembly, DLL, or relevant artifact. 테스트 컨테이너는 예약 단위입니다.The test container is the scheduling unit. 각 컨테이너에서 테스트는 테스트 프레임워크에 따라 실행됩니다.In each container, the tests are run according to the test framework. 많은 컨테이너가 있는 경우 프로세스가 컨테이너 내의 테스트 실행을 마치면 사용 가능한 다음 컨테이너가 제공됩니다.If there are many containers, then as processes finish executing the tests in a container, they are given the next available container.

MaxCpuCount는 다음과 같을 수 있습니다.MaxCpuCount can be:

n, 여기서 1 < = n < = 코어 수에 해당하며 최대 n개의 프로세스가 시작됩니다.n, where 1 <= n <= number of cores: up to n processes will be launched

n, 여기서 n = 다른 모든 값이 되며, 시작되는 프로세스의 수는 컴퓨터에서 사용 가능한 코어 수까지입니다.n, where n = any other value: the number of processes launched will be up to as many as available cores on the machine
TestSessionTimeout 사용자가 지정된 시간 제한을 초과하는 테스트 세션을 종료할 수 있도록 합니다.Allows users to terminate a test session when it exceeds a given timeout. 시간 제한을 설정하면 리소스가 효율적으로 사용되고 테스트 세션이 설정된 시간으로 제한됩니다.Setting a timeout ensures that resources are well consumed and test sessions are constrained to a set time. 이 설정은 Visual Studio 2017 버전 15.5 이상에서 사용할 수 있습니다.The setting is available in Visual Studio 2017 version 15.5 and later.

진단 데이터 어댑터(데이터 수집기)Diagnostic Data Adapters (Data Collectors)

DataCollectors 요소는 진단 데이터 어댑터의 설정을 지정합니다.The DataCollectors element specifies settings of diagnostic data adapters. 진단 데이터 어댑터는 테스트 환경 및 응용 프로그램에 대한 추가 정보를 수집합니다.Diagnostic data adapters gather additional information about the environment and the application under test. 각 어댑터에는 기본 설정이 있으며 기본 설정을 사용하지 않으려는 경우에만 설정을 제공해야 합니다.Each adapter has default settings, and you only have to provide settings if you don't want to use the defaults.

코드 검사 어댑터Code coverage adapter

코드 검사 데이터 수집기는 테스트에서 응용 프로그램 코드 중 실행된 부분에 대한 로그를 만듭니다.The code coverage data collector creates a log of which parts of the application code have been exercised in the test. 코드 검사의 설정을 사용자 지정하는 방법에 대한 자세한 내용은 코드 검사 분석 사용자 지정을 참조하세요.For more information about customizing the settings for code coverage, see Customizing Code Coverage Analysis.

비디오 데이터 수집기Video data collector

비디오 데이터 수집기는 테스트를 실행할 때 기록되는 화면을 캡처합니다.The video data collector captures a screen recording when tests are run. 이 기록은 UI 테스트 문제 해결에 유용합니다.This recording is useful for troubleshooting UI tests. 비디오 데이터 수집기는 Visual Studio 2017 버전 15.5 이상에서 제공됩니다.Video data collector is available in Visual Studio 2017 version 15.5 and later.

다른 형식의 진단 데이터 어댑터를 사용자 지정하려면 테스트 설정 파일을 사용해야 합니다.To customize any other type of diagnostic data adapter, you must use a test settings file.

TestRunParametersTestRunParameters

TestRunParameters는 런타임에 테스트에서 사용할 수 있는 변수 및 값을 정의하는 방법을 제공합니다.TestRunParameters provides a way to define variables and values that are available to the tests at runtime. 이러한 변수는 TestContext 개체를 사용하여 액세스될 수 있습니다.These variables can be accessed by using the TestContext object.

[TestMethod]
public void HomePageTest()
{
    string appURL = TestContext.Properties["webAppUrl"];

TestContext를 사용하려면 개인 TestContext 필드 및 공용 TestContext 속성을 테스트 클래스에 추가합니다.To use TestContext, add a private TestContext field and a public TestContext property to your test class.

MSTest 실행 설정MSTest Run Settings

이러한 설정은 [TestMethod] 특성을 가진 테스트 메서드를 실행하는 테스트 어댑터에 따라 달라집니다.These settings are specific to the test adapter that runs test methods that have the [TestMethod] attribute.

구성Configuration 기본Default Values
ForcedLegacyModeForcedLegacyMode Falsefalse Visual Studio 2012에서 MSTest 어댑터는 더욱 빠르고 확장성 가능하도록 최적화되었습니다.In Visual Studio 2012, the MSTest adapter was optimized to make it faster and more scalable. 테스트가 실행되는 순서와 같은 일부 동작은 이전 버전 Visual Studio처럼 정확하지 않을 수 있습니다.Some behavior, such as the order in which tests are run, might not be exactly as it was in previous editions of Visual Studio. 이전 테스트 어댑터를 사용하려면 이 값을 true 로 설정합니다.Set this value true to use the older test adapter.

예를 들어, 단위 테스트에 대해 app.config 파일을 지정한 경우 이 설정을 사용할 수 있습니다.For example, you might use this setting if you have an app.config file specified for a unit test.

새 어댑터를 사용할 수 있도록 테스트를 리팩터링하는 것이 좋습니다.We recommend that you consider refactoring your tests to allow you to use the newer adapter.
IgnoreTestImpactIgnoreTestImpact Falsefalse 테스트 영향 기능은 MSTest 또는 Microsoft Test Manager에서 실행할 때 최근 변경 내용의 영향을 받는 테스트의 우선 순위를 지정합니다.The test impact feature prioritizes tests that are affected by recent changes, when run in MSTest or from Microsoft Test Manager. 이 설정에서는 이 기능이 비활성화됩니다.This setting deactivates the feature. 자세한 내용은 방법: 코드 변경 후 실행할 테스트를 확인하기 위해 데이터 수집을 참조하세요.For more information, see How to: Collect Data to Check Which Tests Should be Run After Code Changes.
SettingsFileSettingsFile 여기에서 MS 테스트 어댑터와 함께 사용할 테스트 설정 파일을 지정할 수 있습니다.You can specify a test settings file to use with the MS Test adapter here. 테스트, 테스트 설정, 테스트 설정 파일 선택메뉴를 사용하여 테스트 설정 파일을 지정할 수도 있습니다.You can also specify a test settings file using the menu Test, Test Settings, Select Test Settings File.

이 값을 지정하면 ForcedlegacyModetrue로 설정해야 합니다.If you specify this value, you must also set the ForcedlegacyMode to true.

<RunSettings> <MSTest> <SettingsFile>my.testsettings</SettingsFile> <ForcedLegacyMode>true</ForcedLegacyMode> </MSTest> </RunSettings>
KeepExecutorAliveAfterLegacyRunKeepExecutorAliveAfterLegacyRun Falsefalse 테스트 실행이 완료되면 MSTest가 종료됩니다.After a test run is completed, MSTest is shut down. 테스트의 일부로 시작된 프로세스도 종료됩니다.Any process that is launched as part of the test is also killed. 테스트 Executor를 활성 상태로 유지하려면 이 구성을 true로 전환합니다.If you want to keep the test executor alive, turn this configuration to true.

예를 들어, 이 설정을 사용하여 브라우저가 코딩된 UI 테스트 사이에서 계속 실행되도록 할 수 있습니다.For example, you could use this setting to keep the browser running between coded UI tests.
DeploymentEnabledDeploymentEnabled truetrue 값을 false로 설정할 경우 테스트 메서드에서 지정한 배포 항목이 배포 디렉터리로 복사되지 않습니다.If you set the value to false, deployment items that you have specified in your test method will not be copied to the deployment directory.
CaptureTraceOutputCaptureTraceOutput truetrue Trace.WriteLine을 사용하여 테스트 메서드에서 디버그 추적으로 쓸 수 있습니다.You can write to the debug trace from your Test method using Trace.WriteLine. 이 구성을 사용하여 이러한 디버그 추적을 해제할 수 있습니다.Using this configuration, you can turn off these debug traces.
DeleteDeploymentDirectoryAfterTestRunIsCompleteDeleteDeploymentDirectoryAfterTestRunIsComplete truetrue 이 값을 false로 설정하여 테스트를 실행한 후 배포 디렉터리를 유지할 수 있습니다.You can retain the Deployment Directory after a test run by setting this value to false.
MapInconclusiveToFailedMapInconclusiveToFailed Falsefalse 테스트가 불충분한 상태로 반환되는 경우 일반적으로 테스트 탐색기에서 생략된 상태로 매핑됩니다.If a test returns with an inconclusive status, it is usually mapped to Skipped status in Test Explorer. 결과가 불충분한 테스트를 실패로 표시하려는 경우 이 구성을 사용합니다.If you want Inconclusive tests to be shown as Failed, use this configuration.
InProcModeInProcMode Falsefalse 테스트를 MS 테스트 어댑터와 동일한 프로세스에서 실행하려면 이 값을 true로 설정합니다.If you want your tests to be run in the same process as the MS Test adapter, set this value to true. 이 설정을 사용하면 성능이 약간 향상됩니다.This setting provides a minor performance gain. 하지만 테스트가 종료될 때 예외가 발생하면 다른 테스트를 계속할 수 없습니다.But if a test exits with an exception, the other tests will not continue.
AssemblyResolutionAssemblyResolution falsefalse 단위 테스트를 찾아서 실행하는 경우 추가 어셈블리에 대한 경로를 지정할 수 있습니다.You can specify paths to additional assemblies when finding and running unit tests. 예를 들어 테스트 어셈블리와 동일한 디렉터리에 존재하지 않는 종속성 어셈블리에 대해 이러한 경로를 사용합니다.For example, use these paths for dependency assemblies that don't reside in the same directory as the test assembly. 경로를 지정하려면 "디렉터리 경로" 요소를 사용합니다.To specify a path, use a "Directory Path" element. 경로는 환경 변수를 포함할 수 있습니다.Paths can contain environment variables.

<AssemblyResolution> <Directory Path="D:\myfolder\bin\" includeSubDirectories="false"/> </AssemblyResolution>

참고 항목See also