Configurer des tests unitaires à l’aide d’un fichier .runsettingsConfigure unit tests by using a .runsettings file

Les tests unitaires dans Visual Studio peuvent être configurés à l’aide d’un fichier .runsettings.Unit tests in Visual Studio can be configured by using a .runsettings file. Par exemple, vous pouvez changer la version du .NET Framework sur laquelle les tests sont exécutés, le répertoire des résultats des tests ou les données collectées pendant une série de tests.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.

Les fichiers de paramètres d’exécution sont facultatifs.Run settings files are optional. Si vous n’avez pas besoin d’une configuration spéciale, un fichier .runsettings n’est pas nécessaire.If you don't require any special configuration, you don't need a .runsettings file. L’utilisation la plus courante d’un fichier .runsettings est de personnaliser l’analyse de la couverture du code.The most common use of a .runsettings file is to customize code coverage analysis.

Spécifier un fichier de paramètres d’exécutionSpecify a run settings file

Les fichiers de paramètres d’exécution permettent de configurer des tests qui sont exécutés depuis la ligne de commande, dans l’IDE ou dans un flux de travail de build avec Azure Test Plans ou Team Foundation Server (TFS).Run settings files can be used to configure tests that are run from the command line, in the IDE, or in a build workflow using Azure Test Plans or Team Foundation Server (TFS).

Spécifier un fichier de paramètres d’exécution dans l’IDESpecify a run settings file in the IDE

Sélectionnez Test > Paramètres de test > Sélectionner le fichier de paramètres des tests, puis sélectionnez le fichier .runsettings.Select Test > Test Settings > Select Test Settings File and then select the .runsettings file. Le fichier apparaît dans le menu Paramètres de test. Vous pouvez le sélectionner ou le désélectionner.The file appears on the Test Settings menu, and you can select or deselect it. Quand il est sélectionné, le fichier de paramètres d’exécution s’applique quand vous sélectionnez Analyser la couverture du code.While selected, the run settings file applies whenever you select Analyze Code Coverage.

Option de menu Sélectionner le fichier de paramètres des tests dans Visual Studio

Spécifier un fichier de paramètres d’exécution depuis la ligne de commandeSpecify a run settings file at the command line

Pour exécuter des tests depuis la ligne de commande, utilisez vstest.console.exe et spécifiez le fichier de paramètres à l’aide du paramètre /Settings.To run tests from the command line, use vstest.console.exe and specify the settings file by using the /Settings parameter.

  1. Lancez l'invite de commandes développeur Visual Studio :Launch the Visual Studio Developer Command Prompt:

    Dans le menu Démarrer de Windows, choisissez Visual Studio 2017 > Invite de commandes développeur pour VS 2017.On the Windows Start menu, choose Visual Studio 2017 > Developer Command Prompt for VS 2017.

  2. Entrez une commande semblable à la suivante :Enter a command similar to:

    vstest.console.exe MyTestAssembly.dll /EnableCodeCoverage /Settings:CodeCoverage.runsettings
    

Pour plus d’informations, consultez Options de ligne de commande VSTest.Console.exe.For more information, see VSTest.Console.exe command-line options.

Personnaliser des testsCustomize tests

Pour personnaliser vos tests en utilisant un fichier .runsettings, effectuez les étapes suivantes :To customize your tests using a .runsettings file, follow these steps:

  1. Ajoutez un fichier XML à votre solution Visual Studio et enregistrez-le sous le nom test.runsettings.Add an XML file to your Visual Studio solution and save it as test.runsettings.

    Tip

    Le nom du fichier n’a pas d’importance, à condition d’utiliser l’extension .runsettings.The file name doesn't matter, as long as you use the extension .runsettings.

  2. Remplacez le contenu du fichier par le code XML de l’exemple qui suit, puis personnalisez-le selon vos besoins.Replace the file contents with the XML from the example that follows, and customize it as needed.

  3. Dans le menu Test, choisissez Paramètres de test > Sélectionner le fichier de paramètres des tests.On the Test menu, choose Test Settings > Select Test Settings File. Accédez au fichier .runsettings que vous avez créé, puis sélectionnez OK.Browse to the .runsettings file you created, and then select OK.

    Tip

    Vous pouvez créer plusieurs fichiers .runsettings dans votre solution et en sélectionner un en tant que fichier de paramètres de test actif en fonction des besoins.You can create more than one .runsettings file in your solution and select one as the active test settings file as needed.

Exemple de fichier .runsettingsExample .runsettings file

Le code XML suivant illustre le contenu d’un fichier .runsettings type.The following XML shows the contents of a typical .runsettings file. Chaque élément du fichier est facultatif, car il a une valeur par défaut.Each element of the file is optional because it has a default value.

<?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>

      <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">
        <!--Video data collector is only available with Visual Studio 2017 version 15.5 and higher -->
      </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>

Éléments d’un fichier .runsettingsElements of a .runsettings file

Les sections qui suivent détaillent les éléments d’un fichier .runsettings.The sections that follow detail the elements of a .runsettings file.

Configuration d’exécutionRun configuration

<RunConfiguration>
    <MaxCpuCount>1</MaxCpuCount>
    <ResultsDirectory>.\TestResults</ResultsDirectory>
    <TargetPlatform>x86</TargetPlatform>
    <TargetFrameworkVersion>Framework40</TargetFrameworkVersion>
    <TestAdaptersPaths>%SystemDrive%\Temp\foo;%SystemDrive%\Temp\bar</TestAdaptersPaths>
    <TestSessionTimeout>10000</TestSessionTimeout>
</RunConfiguration>

L’élément RunConfiguration peut inclure les éléments suivants :The RunConfiguration element can include the following elements:

NœudNode Par défautDefault ValeursValues
ResultsDirectoryResultsDirectory Répertoire où les résultats des tests sont placés.The directory where test results are placed.
TargetFrameworkVersionTargetFrameworkVersion Framework40Framework40 Framework35, Framework40, Framework45Framework35, Framework40, Framework45

Ce paramètre spécifie la version du framework de tests unitaires qui est utilisée pour découvrir et exécuter les tests.This setting specifies the version of the unit test framework used to discover and execute the tests. Elle peut être différente de la version de la plateforme .NET. que vous spécifiez dans les propriétés de génération du projet de test unitaire.It can be different from the version of the .NET platform that you specify in the build properties of the unit test project.
TargetPlatformTargetPlatform x86x86 x86, x64x86, x64
TreatTestAdapterErrorsAsWarningsTreatTestAdapterErrorsAsWarnings Falsefalse false, truefalse, true
TestAdaptersPathsTestAdaptersPaths Un ou plusieurs chemins du répertoire où se trouvent les TestAdaptersOne or more paths to the directory where the TestAdapters are located
MaxCpuCountMaxCpuCount 11 Ce paramètre permet de contrôler le degré d’exécution de tests parallèles lors des tests unitaires, en utilisant les cœurs disponibles sur la machine.This setting controls the degree of parallel test execution when running unit tests, using available cores on the machine. Le moteur d’exécution des tests démarre en tant que processus distinct sur chaque cœur disponible et donne à chaque cœur un conteneur de tests à exécuter.The test execution engine starts as a distinct process on each available core, and gives each core a container with tests to run. Un conteneur peut être un assembly, une DLL ou un artefact approprié.A container can be an assembly, DLL, or relevant artifact. Le conteneur de test est l’unité de planification.The test container is the scheduling unit. Dans chaque conteneur, les tests sont exécutés en fonction du framework de test configuré.In each container, the tests are run according to the test framework. S’il y a beaucoup de conteneurs, chaque processus reçoit le conteneur disponible suivant dès qu’il a terminé l’exécution des tests d’un conteneur.If there are many containers, then as processes finish executing the tests in a container, they're given the next available container.

Valeur possible pour MaxCpuCount :MaxCpuCount can be:

n, où 1 < = n < = nombre de cœurs : jusqu’à n processus peuvent être lancés.n, where 1 <= n <= number of cores: up to n processes are launched

n, où n = toute autre valeur : le nombre de processus lancés dépend du nombre de cœurs disponiblesn, where n = any other value: the number of processes launched can be up to the number of available cores
TestSessionTimeoutTestSessionTimeout Permet aux utilisateurs de mettre fin à une session de test lorsque celle-ci dépasse le délai spécifié.Allows users to terminate a test session when it exceeds a given timeout. La définition d’un délai d’expiration garantit que les ressources sont consommées et que les sessions de test sont limitées à une durée spécifique.Setting a timeout ensures that resources are well consumed and test sessions are constrained to a set time. Le paramètre est disponible dans Visual Studio 2017 versions 15.5 et ultérieures.The setting is available in Visual Studio 2017 version 15.5 and later.

Diagnostic des adaptateurs de données (collecteurs de données)Diagnostic data adapters (data collectors)

L’élément DataCollectors spécifie les paramètres des adaptateurs de données de diagnostic.The DataCollectors element specifies settings of diagnostic data adapters. Les adaptateurs de données de diagnostic rassemblent des informations supplémentaires sur l’environnement et sur l’application testée.Diagnostic data adapters gather additional information about the environment and the application under test. Chaque adaptateur a des paramètres par défaut. Il vous suffit de fournir des paramètres si vous ne souhaitez pas utiliser les valeurs par défaut.Each adapter has default settings, and you only have to provide settings if you don't want to use the defaults.

Adaptateur de couverture du codeCode coverage adapter

<CodeCoverage>
    <ModulePaths>
        <Exclude>
            <ModulePath>.*CPPUnitTestFramework.*</ModulePath>
        </Exclude>
    </ModulePaths>

    <UseVerifiableInstrumentation>True</UseVerifiableInstrumentation>
    <AllowLowIntegrityProcesses>True</AllowLowIntegrityProcesses>
    <CollectFromChildProcesses>True</CollectFromChildProcesses>
    <CollectAspDotNet>False</CollectAspDotNet>
</CodeCoverage>

Le collecteur de données de couverture du code crée un journal des parties du code d’application qui ont été testées.The code coverage data collector creates a log of which parts of the application code have been exercised in the test. Pour plus d’informations sur la personnalisation des paramètres pour la couverture du code, consultez Personnaliser l’analyse de la couverture du code.For more information about customizing the settings for code coverage, see Customize code coverage analysis.

Collecteur de données vidéoVideo data collector

Le collecteur de données vidéo capture un enregistrement de l’écran quand des tests sont exécutés.The video data collector captures a screen recording when tests are run. Cet enregistrement est utile pour résoudre les problèmes des tests d’interface utilisateur.This recording is useful for troubleshooting UI tests. Le collecteur de données vidéo est disponible dans Visual Studio 2017 versions 15.5 et ultérieures.The video data collector is available in Visual Studio 2017 version 15.5 and later.

Pour personnaliser un autre type d’adaptateur de données de diagnostic, utilisez un fichier de paramètres de test.To customize any other type of diagnostic data adapters, use a test settings file.

TestRunParametersTestRunParameters

<TestRunParameters>
    <Parameter name="webAppUrl" value="http://localhost" />
    <Parameter name="webAppUserName" value="Admin" />
    <Parameter name="webAppPassword" value="Password" />
</TestRunParameters>

Les paramètres de série de tests fournissent un moyen de définir des variables et des valeurs qui sont disponibles pour les tests au moment de l’exécution.Test run parameters provide a way to define variables and values that are available to the tests at runtime. Accédez aux paramètres à l’aide de la propriété TestContext.Properties :Access the parameters using the TestContext.Properties property:

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

Pour utiliser les paramètres de série de tests, ajoutez un champ TestContext privé et une propriété TestContext publique à votre classe de test.To use test run parameters, add a private TestContext field and a public TestContext property to your test class.

Paramètres d’exécution MSTestMSTest run settings

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

Ces paramètres sont spécifiques à l’adaptateur de test qui exécute les méthodes de test disposant de l’attribut TestMethodAttribute .These settings are specific to the test adapter that runs test methods that have the TestMethodAttribute attribute.

ConfigurationConfiguration Par défautDefault ValeursValues
ForcedLegacyModeForcedLegacyMode Falsefalse Dans Visual Studio 2012, l’adaptateur MSTest a été optimisé afin d’être plus rapide et plus scalable.In Visual Studio 2012, the MSTest adapter was optimized to make it faster and more scalable. Un comportement, tel que l’ordre dans lequel les tests sont exécutés, peut ne pas être exactement identique à celui d’éditions précédentes de 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. Définissez cette valeur sur true pour utiliser l’adaptateur de test le plus ancien.Set this value to true to use the older test adapter.

Par exemple, vous pouvez utiliser ce paramètre si un fichier app.config est spécifié pour un test unitaire.For example, you might use this setting if you have an app.config file specified for a unit test.

Il est recommandé d’envisager de refactoriser vos tests pour vous permettre d’utiliser le nouvel adaptateur.We recommend that you consider refactoring your tests to allow you to use the newer adapter.
IgnoreTestImpactIgnoreTestImpact Falsefalse La fonctionnalité d’impact de test classe par priorité les tests affectés par des modifications récentes, lorsqu’ils sont exécutés dans MSTest ou à partir de Microsoft Test Manager.The test impact feature prioritizes tests that are affected by recent changes, when run in MSTest or from Microsoft Test Manager. Ce paramètre désactive la fonctionnalité.This setting deactivates the feature. Pour plus d’informations, consultez Quels tests doivent être exécutés depuis une version antérieure ?.For more information, see Which tests should be run since a previous build.
SettingsFileSettingsFile Vous pouvez spécifier un fichier de paramètres de test à utiliser avec l’adaptateur MSTest ici.You can specify a test settings file to use with the MSTest adapter here. Vous pouvez également spécifier un fichier de paramètres de test en sélectionnant Test > Paramètres de test > Sélectionner le fichier de paramètres des tests.You can also specify a test settings file by selecting Test > Test Settings > Select Test Settings File.

Si vous spécifiez cette valeur, vous devez également affecter à ForcedlegacyMode la valeur true.If you specify this value, you must also set the ForcedlegacyMode to true.

<ForcedLegacyMode>true</ForcedLegacyMode>
KeepExecutorAliveAfterLegacyRunKeepExecutorAliveAfterLegacyRun Falsefalse Une fois qu’une série de tests est terminée, MSTest est arrêté.After a test run is completed, MSTest is shut down. Tout processus qui est lancé dans le cadre du test est également terminé.Any process that is launched as part of the test is also killed. Si vous souhaitez conserver l’exécuteur de test actif, définissez la valeur sur true.If you want to keep the test executor alive, set the value to true. Par exemple, vous pouvez utiliser ce paramètre pour que le navigateur continue à s’exécuter entre des tests codés de l’interface utilisateur.For example, you could use this setting to keep the browser running between coded UI tests.
DeploymentEnabledDeploymentEnabled truetrue Si vous définissez cette valeur sur false, les éléments de déploiement que vous avez spécifiés dans votre méthode de test ne sont pas copiés dans le répertoire de déploiement.If you set the value to false, deployment items that you've specified in your test method aren't copied to the deployment directory.
CaptureTraceOutputCaptureTraceOutput truetrue Vous pouvez écrire dans la trace du débogage à partir de votre méthode de test en utilisant Trace.WriteLine.You can write to the debug trace from your test method using Trace.WriteLine.
DeleteDeploymentDirectoryAfterTestRunIsCompleteDeleteDeploymentDirectoryAfterTestRunIsComplete truetrue Pour conserver le répertoire de déploiement après une série de tests, définissez cette valeur sur false.To retain the deployment directory after a test run, set this value to false.
MapInconclusiveToFailedMapInconclusiveToFailed Falsefalse Si un test se termine avec un état Non concluant, il est mappé à l’état Ignoré dans l’Explorateur de tests.If a test completes with an inconclusive status, it is mapped to the skipped status in Test Explorer. Si vous voulez que les tests non concluants s’affichent comme ayant échoué, définissez la valeur sur true.If you want inconclusive tests to be shown as failed, set the value to true.
InProcModeInProcMode Falsefalse Si vous souhaitez que vos tests soient exécutés dans le même processus que l’adaptateur de test Microsoft, définissez cette valeur sur true.If you want your tests to be run in the same process as the MSTest adapter, set this value to true. Ce paramètre offre un gain de performances mineur.This setting provides a minor performance gain. Mais si un test s’arrête à cause d’une exception, les tests restants ne s’exécutent pas.But if a test exits with an exception, the remaining tests don't run.
AssemblyResolutionAssemblyResolution Falsefalse Vous pouvez spécifier des chemins d’assemblys supplémentaires pour la recherche et l’exécution des tests unitaires.You can specify paths to additional assemblies when finding and running unit tests. Par exemple, utilisez ces chemins pour les assemblys de dépendance qui ne se trouvent pas dans le même répertoire que l’assembly de test.For example, use these paths for dependency assemblies that aren't in the same directory as the test assembly. Pour spécifier un chemin, utilisez un élément Directory Path.To specify a path, use a Directory Path element. Les chemins peuvent inclure des variables d’environnement.Paths can include environment variables.

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

Voir aussiSee also