Partager via


Comment : déployer des fichiers pour les tests

Avant d'exécuter un test, de test et l'application doivent être copiés vers un emplacement où ils peuvent s'exécuter, ainsi que d'autres assemblys qu'ils référencent.Un test requiert généralement également les fichiers supplémentaires tels que les tests, les fichiers de configuration, une base de données, et les assemblys chargés explicitement.Pour rendre ces fichiers supplémentaires disponibles pour le test, vous devez spécifier qu'ils doivent être déployés.

Où font test ?

Visual Studio 2012 peut exécuter des tests dans plusieurs emplacements :

Comment faire pour déployer des fichiers de test pour un test local ?

Voici la meilleure méthode :

  1. Copiez les fichiers dans le répertoire de cible de build dans le cadre de le processus de génération.

    • S'ils sont spécifiques à un projet de test, comprenez- comme les fichiers de contenu du projet de test Visual Studio.Sélectionnez-les dans l'explorateur de solutions et affectez à la propriété Copiez pour sortir à Copier si plus récent.

    • Sinon, définissez une tâche post-build de copier les fichiers dans le répertoire de sortie de génération.Par exemple :

      xcopy /Y /S "$(SolutionDir)SharedFiles\*" "$(TargetDir)"
      

      Ouvrez les propriétés du projet de votre projet de test.Dans un projet de c, ouvrez la page Événements de build .Dans un projet Visual Basic, ouvrez la page Compiler et choisissez Événements de build.Ajoutez la Commande copier dans le champ Événement post-build .

  2. Utilisez DeploymentItemAttribute sur les méthodes de test ou des classes de test pour spécifier les fichiers et dossiers qui doivent être copiés dans le dossier de sortie de génération au répertoire de déploiement.

    [TestClass]
    class TestClass1
    {
      [TestMethod]
      [DeploymentItem("source", "targetFolder")]
      public void Test1()
      {
        string testData = System.IO.File.ReadAllText(@"targetFolder\source");
        ...
    } }
    
    <TestClass()> _
    Public Class UnitTest1
        <TestMethod()> _
        <DeploymentItem("source", "targetFolder")> _
        Sub TestMethod1()
            Dim testData As String = _
                System.IO.File.ReadAllText(@"targetFolder\source")
        ...
        End Sub
    End Class
    
    • source est un fichier ou un dossier à copier.Le chemin d'accès peut être absolu, ou relatif au répertoire de sortie de génération.

    • targetFolder est facultatif.Il s'agit du dossier dans lequel le fichier source ou le contenu du dossier copié.Le chemin d'accès peut être absolu, ou relatif au répertoire de déploiement.La valeur par défaut est « .  », le répertoire de déploiement.

      [!REMARQUE]

      targetFolder est toujours un dossier, jamais un chemin d'accès.Vous ne pouvez pas modifier le nom du fichier à l'aide de DeploymentItem.

    Vous pouvez utiliser l'attribut autant de fois que vous le souhaitez, et vous pouvez l'appliquer aux méthodes de test ou aux classes de test.

    Lorsque vous sélectionnez un ensemble de tests à exécuter, tous les éléments spécifiés dans leurs attributs DeploymentItem de sont copiés avant la série de tests démarre.

  3. Envisagez d'exécuter vos tests unitaires directement dans le dossier de sortie de génération, afin que le test s'exécute plus rapidement.Cela est particulièrement utile sur le serveur de builds après avoir vérifié vos tests.

    Pour cela, ajoutez un fichier d' .runsettings à votre solution, incluez <DeploymentEnabled>False</DeploymentEnabled>, puis sélectionnez le fichier dans Test, menu Paramètres de test .Le même effet se produit dans une série de tests dans laquelle DeploymentItemAttribute n'est pas utilisé du tout.

    Toutefois, vous ne pouvez pas éviter d'utiliser un dossier de déploiement si vous utilisez un fichier d' .testsettings, requis pour le Web et des tests de charge, les tests codés de l'interface utilisateur, et tout test dans lequel vous déployez une application aux ordinateurs distants.

Quand dois -je utiliser un fichier de .testsettings ?

Vous n'avez pas besoin d'un fichier d' .testsettings pour les tests unitaires ordinaires.Si vous n'avez pas besoin d'un fichier de .testsettings, n'utilisez pas un.Il effectue des tests unitaires s'exécuter plus lentement, et il est incompatible avec des infrastructures de test tierces.Étudiez les autres façons de déploiement à la place.

Vous avez besoin d'un fichier de .testsettings si l'un de ces instructions sont remplies :

Si vous utilisez un fichier de .testsettings, vos assemblys d'application et de test seront toujours copiés vers un dossier de déploiement.

Vous pouvez spécifier des fichiers de données et des dossiers sur la page Déploiement de l'éditeur de .testsettings.Ils sont copiés dans le dossier de déploiement avant chaque série de tests.Les chemins d'éléments spécifiés dans cette page sont toujours par rapport à le répertoire de la solution, et sont toujours déployés vers le dossier de déploiement à côté d'assemblys d'application et de test.

Si vous souhaitez utiliser des chemins d'accès absolus ou spécifier un répertoire cible différent, ouvrez le fichier de .testsettings avec l'éditeur XML, et insérez un fragment semblable à celui-ci :

<Deployment>
  <DeploymentItem filename="C:\MyTestData\TestData.mdb"
        outputDirectory="D:\TestDB\" />
</Deployment>

outputDirectory peut être absolu ou relatif au répertoire de déploiement.

Lorsque puis qu'un dossier de déploiement distinct est utilisé ?

Si vous exécutez des tests à l'aide de Visual Studio, le dossier de déploiement est créé sous TestResults dans votre dossier de solution.

Un dossier de déploiement distinct est utilisé si les méthodes de test ou les classes de l'une des dans une série de tests a l'attribut DeploymentItem de, ou si vous utilisez un fichier d' .testsettings .

Si un dossier de déploiement est utilisé, les fichiers et dossiers suivants sont copiés dans le dossier de déploiement avant l'exécution des tests :

  • Fichier d'assembly de test

  • Tous les assemblys dépendants

  • Fichiers et dossiers que vous avez spécifiés explicitement, à l'aide de DeploymentItemAttribute ou dans un fichier d' .testsettings

Dossiers de déploiement pour une série de tests locale

Dossier de déploiement local en vue de tests

Lorsque est-ce-que les fichiers sont déployés et dans quelle séquence ?

Dans une série de tests, tous les fichiers soient déployés sont copiés avant que tous les tests démarrez.Une série de tests est une série de tests initialisés par une seule commande ou un événement planifié.Cela signifie que si vous spécifiez un fichier de données à déployer pour une méthode de test particulière, il est également disponible pour chaque autre test qui est exécuté dans le même s'exécuter.

Les éléments suivants sont copiés, dans l'ordre indiqué.Éléments qui sont copiés ultérieurement remplacent ceux qui ont été copiés précédemment, s'ils ont le même nom.

  1. Éléments spécifiés à l'aide de DeploymentItemAttribute

  2. Dépendances.Par exemple, les fichiers de configuration de l'application et les assemblys dépendants.

  3. Éléments spécifiés dans un fichier d' .testsettings, si vous utilisez un.

  4. Binaires instrumentés.Par exemple, assemblys qui ont été instrumentés pour activer la couverture du code ou IntelliTrace.

    Si vous utilisez l'instrumentation sur place, les binaires sont d'abord instrumentés, puis copiés dans le répertoire de déploiement ; sinon, ils sont d'abord copiés, puis instrumentés.L'instrumentation sur place est le paramètre par défaut pour les tests qui sont exécutés localement.

  5. Fichiers qui composent le test.Ceux-ci incluent les assemblys de test pour les tests unitaires, les fichiers texte ou .mht pour les tests manuels ou d'autres types de fichiers pour d'autres types de tests (tels que les tests génériques).

Que se trouve dans le dossier TestResults ?

  • Dossier de série de tests.TestResults contient un dossier pour chaque série de tests qui a démarré.Son nom inclut le moment où il a été créé.

    Si vous spécifiez l'installation et les scripts de nettoyage dans un fichier de .testsettings, le dossier de série de tests contient ces scripts.

  • Out.Chaque dossier de série de tests contient un dossier appelé Out.Le dossier de sortie est le dossier de déploiement réel, auquel les assemblys et autres fichiers de déploiement sont copiés lorsque la série de tests démarre.

  • Dans.Les résultats de la couverture du code et certains autres résultats des tests sont stockés dans le dossier nommé dans.

Voir aussi

Référence

DeploymentItemAttribute

Concepts

Instrumentation et nouvelle signature d'assemblys

Autres ressources

Spécification de paramètres de test pour Visual Studio Tests