Partager via


Configurer MSTest

MSTest, Microsoft Testing Framework, est une infrastructure de tests pour les applications .NET. Elle vous permet d’écrire et d’exécuter des tests et de fournir des suites de tests avec une intégration à Visual Studio et aux fonctionnalités Explorateur de test Visual Studio Code, à l’interface CLI .NET et à plusieurs pipelines d’intégration continue (CI).

MSTest est une infrastructure de tests multiplateforme, open source et totalement prise en charge qui fonctionne avec toutes les cibles .NET prises en charge (.NET Framework, .NET Core, .NET, UWP, WinUI, etc.) hébergées sur GitHub.

Runsettings

Un fichier .runsettings peut être utilisé pour configurer la façon dont les tests unitaires sont exécutés. Pour découvrir plus d’informations sur les configurations et les runsettings liés à la plateforme, vous pouvez consulter la documentation sur les runsettings VSTest ou la documentation sur les runsettings de l’exécuteur MSTest.

Élément MSTest

Les entrées des paramètres d'exécution suivantes permettent de configurer le comportement de MSTest.

Configuration Default Valeurs
AssemblyCleanupTimeout 0 Spécifiez globalement le délai d’expiration à appliquer à chaque instance de méthode de nettoyage d’assembly. L’attribut [Timeout] spécifié sur la méthode de nettoyage d’assembly remplace le délai d’expiration global.
AssemblyInitializeTimeout 0 Spécifiez globalement le délai d’expiration à appliquer à chaque instance de méthode d’initialisation d’assembly. L’attribut [Timeout] spécifié sur la méthode d’initialisation d’assembly remplace le délai d’expiration global.
AssemblyResolution false Vous pouvez spécifier des chemins d’assemblys supplémentaires pour la recherche et l’exécution des tests unitaires. 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. Pour spécifier un chemin, utilisez un élément Directory Path. Les chemins peuvent inclure des variables d’environnement.

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

Cette fonctionnalité est appliquée seulement lors de l’utilisation d’une cible .NET Framework.
CaptureTraceOutput true Capture des messages texte provenant des API Console.Write*, Trace.Write* et Debug.Write* qui seront associées au test en cours d’exécution.
ClassCleanupLifecycle EndOfClass Si vous souhaitez que le nettoyage de classe se produise à la fin de l’assembly, affectez la valeur EndOfAssembly. (N’est plus pris en charge à partir de MSTest v4, car EndOfClass est le seul comportement par défaut de ClassCleanup)
ClassCleanupTimeout 0 Spécifiez globalement le délai d’expiration à appliquer à chaque instance de méthode de nettoyage de classe. L’attribut [Timeout] spécifié sur la méthode de nettoyage de la classe remplace le délai d’expiration global.
ClassInitializeTimeout 0 Spécifiez globalement le délai d’expiration à appliquer à chaque instance de méthode d’initialisation de classe. L’attribut [Timeout] spécifié sur la méthode d’initialisation de la classe remplace le délai d’expiration global.
DeleteDeploymentDirectoryAfterTestRunIsComplete true Pour conserver le répertoire de déploiement après une série de tests, définissez cette valeur sur false.
DeploymentEnabled true Si vous définissez cette valeur sur false, les éléments du 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.
DeployTestSourceDependencies true Valeur indiquant si les références de source de test doivent être déployées.
EnableBaseClassTestMethodsFromOtherAssemblies true Valeur indiquant s’il est nécessaire d’activer la découverte des méthodes de test à partir de classes de base dans un autre assembly que celui de la classe de test qui hérite.
ForcedLegacyMode false Dans les anciennes versions de Visual Studio, l’adaptateur MSTest a été optimisé afin d’être plus rapide et plus 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. Définissez la valeur sur true pour utiliser l’adaptateur de test le plus ancien.

Par exemple, vous pouvez utiliser ce paramètre si un fichier app.config est spécifié pour un test unitaire.

Il est recommandé d’envisager de refactoriser vos tests pour vous permettre d’utiliser le nouvel adaptateur.
MapInconclusiveToFailed false Si un test se termine avec un état Non concluant, il est mappé à l’état Ignoré dans l’Explorateur de tests. Si vous voulez que les tests non concluants s’affichent comme ayant échoué, définissez la valeur sur true.
MapNotRunnableToFailed true Valeur indiquant si un résultat non exécutable est mappé à un test non réussi.
Parallelize Utilisé pour définir les paramètres de parallélisation :

Workers : nombre de threads/workers à utiliser pour la parallélisation, qui correspond par défaut au nombre de processeurs de la machine actuelle.

SCOPE : étendue de la parallélisation. Vous pouvez lui affecter la valeur MethodLevel. Par défaut, ClassLevel est utilisé.

<Parallelize><Workers>32</Workers><Scope>MethodLevel</Scope></Parallelize>
SettingsFile Vous pouvez spécifier un fichier de paramètres de test à utiliser avec l’adaptateur MSTest ici. Vous pouvez également spécifier un fichier de paramètres de test à partir du menu de paramètres.

Si vous spécifiez cette valeur, vous devez également affecter à ForcedLegacyMode la valeur true.

<ForcedLegacyMode>true</ForcedLegacyMode>
TestCleanupTimeout 0 Spécifiez globalement le délai d’expiration à appliquer à chaque instance de méthode de nettoyage de test. L’attribut [Timeout] spécifié sur la méthode de nettoyage de test remplace le délai d’expiration global.
TestInitializeTimeout 0 Spécifiez globalement le délai d’expiration à appliquer à chaque instance de méthode d’initialisation de test. L’attribut [Timeout] spécifié sur la méthode d’initialisation de test remplace le délai d’expiration global.
TestTimeout 0 Obtient le délai d’expiration du cas de test global spécifié.
TreatClassAndAssemblyCleanupWarningsAsErrors false Pour voir vos échecs des nettoyages de classe sous forme d’erreurs, affectez à cette valeur la valeur true.
TreatDiscoveryWarningsAsErrors false Pour signaler des avertissements de découverte de tests en tant qu’erreurs, définissez cette valeur sur true.
ConsiderFixturesAsSpecialTests false Pour afficher AssemblyInitialize, AssemblyCleanup, ClassInitialize, ClassCleanup en tant qu'entrées individuelles dans le journal de Visual Studio et Visual Studio Code Test Explorer et .trx, définissez cette valeur sur vrai.

TestRunParameter, élément

<TestRunParameters>
    <Parameter name="webAppUrl" value="http://localhost" />
</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. Accédez aux paramètres en utilisant la propriété TestContext.Properties MSTest :

private string _appUrl;
public TestContext TestContext { get; set; }

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

Pour utiliser des paramètres d’exécution de test, ajoutez une propriété de publique TestContext à votre classe de test.

Exemple de fichier .runsettings

Le code XML suivant illustre le contenu d’un fichier .runsettings type. Copiez ce code et modifiez-le selon vos besoins.

Chaque élément du fichier est facultatif, car il a une valeur par défaut.

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