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.

Note

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'.

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.

Personnaliser des testsCustomize tests

  1. Ajoutez un fichier XML à votre solution Visual Studio et renommez-le test.runsettings.Add an XML file to your Visual Studio solution and rename it to test.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.

Vous pouvez créer plusieurs fichiers .runsettings dans votre solution, et les activer ou les désactiver à différents moments via le menu Paramètres de test.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.

Activation d’un fichier de paramètres d’exécution

Exemple de fichier .runsettingsExample .runsettings file

Voici un fichier .runsettings classique.Following is a typical .runsettings file. Chaque élément du fichier est facultatif, car chaque valeur est définie par défaut.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>

Le fichier .runsettings est également utilisé pour configurer l’analyse de la couverture du code.The .runsettings file is also used to configure Code coverage analysis.

Le reste de cet article décrit le contenu du fichier.The remainder of this article describes the file content.

Modifier votre fichier .runsettingsEdit your .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 de série de testsTest run configuration

NœudNode Par défautDefault ValeursValues
ResultsDirectory Répertoire où les résultats des tests sont placés.The directory where test results are placed.
TargetFrameworkVersion 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 which version of the unit test framework is 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.
TargetPlatform x86x86 x86, x64x86, x64
TreatTestAdapterErrorsAsWarnings Falsefalse false, truefalse, true
TestAdaptersPaths Un ou plusieurs chemins au répertoire où se trouvent les TestAdaptersOne or multiple paths to the directory where the TestAdapters are located
MaxCpuCount 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 are 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 will be launched

n, où n = toute autre valeur : le nombre de processus lancés dépend du nombre de cœurs disponibles sur la machine.n, where n = any other value: the number of processes launched will be up to as many as available cores on the machine
TestSessionTimeout 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

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 Personnalisation de l’analyse de la couverture du code.For more information about customizing the settings for code coverage, see Customizing 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.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, vous devez utiliser un fichier de paramètres de test.To customize any other type of diagnostic data adapter, you must use a test settings file.

TestRunParametersTestRunParameters

TestRunParameters fournit un moyen de définir des variables et des valeurs qui sont disponibles pour les tests au moment de l’exécution.TestRunParameters provides a way to define variables and values that are available to the tests at runtime. Ces variables sont accessibles via l’objet TestContext.These variables can be accessed by using the TestContext object.

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

Pour utiliser TestContext, ajoutez un champ TestContext privé et une propriété TestContext publique à votre classe de test.To use TestContext, add a private TestContext field and a public TestContext property to your test class.

Paramètres d’exécution MSTestMSTest Run Settings

Ces paramètres sont spécifiques à l’adaptateur de test qui exécute les méthodes de test disposant de l’attribut [TestMethod] .These settings are specific to the test adapter that runs test methods that have the [TestMethod] 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. Attribuez la valeur true pour utiliser l’adaptateur de test le plus ancien.Set this value 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 Guide pratique pour collecter des données et vérifier les tests à exécuter après des modifications du code.For more information, see How to: Collect Data to Check Which Tests Should be Run After Code Changes.
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 MS Test adapter here. Vous pouvez également spécifier un fichier de paramètres de test via le menu Test, Paramètres de test, Sélectionner le fichier de paramètres des tests.You can also specify a test settings file using the menu 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.

<RunSettings> <MSTest> <SettingsFile>my.testsettings</SettingsFile> <ForcedLegacyMode>true</ForcedLegacyMode> </MSTest> </RunSettings>
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 cette configuration sur true.If you want to keep the test executor alive, turn this configuration 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 have specified in your test method will not be 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. Cette configuration vous permet de désactiver ces traces de débogage.Using this configuration, you can turn off these debug traces.
DeleteDeploymentDirectoryAfterTestRunIsCompleteDeleteDeploymentDirectoryAfterTestRunIsComplete truetrue Vous pouvez conserver le répertoire de déploiement après une série de tests en définissant cette valeur sur false.You can retain the Deployment Directory after a test run by setting this value to false.
MapInconclusiveToFailedMapInconclusiveToFailed Falsefalse Si un test retourne un état Non concluant, il est généralement mappé à l’état Ignoré dans l’Explorateur de tests.If a test returns with an inconclusive status, it is usually mapped to Skipped status in Test Explorer. Si vous voulez que les tests non concluants s’affichent comme ayant échoué, utilisez cette configuration.If you want Inconclusive tests to be shown as Failed, use this configuration.
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 MS Test 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 autres tests s’arrêteront également.But if a test exits with an exception, the other tests will not continue.
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 don't reside 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 contenir des variables d’environnement.Paths can contain environment variables.

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

Voir aussiSee also