Partager via


DeploymentItemAttribute, classe

Spécifiez un fichier ou un dossier qui doivent être déployés avec les assemblys avant d'exécuter un test.Insérez cet attribut à une classe ou une méthode de test.Vous pouvez utiliser plusieurs instances.Cet attribut n'est pas héritée.

Hiérarchie d'héritage

System.Object
  System.Attribute
    Microsoft.VisualStudio.TestTools.UnitTesting.DeploymentItemAttribute

Espace de noms :  Microsoft.VisualStudio.TestTools.UnitTesting
Assembly :  Microsoft.VisualStudio.QualityTools.UnitTestFramework (dans Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll)

Syntaxe

'Déclaration
<AttributeUsageAttribute(AttributeTargets.Class Or AttributeTargets.Method, AllowMultiple := True)> _
Public NotInheritable Class DeploymentItemAttribute _
    Inherits Attribute
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple = true)]
public sealed class DeploymentItemAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Class|AttributeTargets::Method, AllowMultiple = true)]
public ref class DeploymentItemAttribute sealed : public Attribute
[<Sealed>]
[<AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple = true)>]
type DeploymentItemAttribute =  
    class
        inherit Attribute
    end
public final class DeploymentItemAttribute extends Attribute

Le type DeploymentItemAttribute expose les membres suivants.

Constructeurs

  Nom Description
Méthode publique DeploymentItemAttribute(String) Spécifie un élément à déployer avant qu'une série de tests démarre.
Méthode publique DeploymentItemAttribute(String, String) Spécifie un élément à déployer avant qu'une série de tests démarre.

Début

Propriétés

  Nom Description
Propriété publique OutputDirectory Obtient le chemin d'accès du répertoire auquel l'élément est copié.
Propriété publique Path Obtient le chemin d'accès du fichier source ou du dossier à copier.
Propriété publique TypeId Lors de son implémentation dans une classe dérivée, obtient un identificateur unique pour Attribute. (Hérité de Attribute.)

Début

Méthodes

  Nom Description
Méthode publique Equals Infrastructure. Retourne une valeur indiquant si cette instance équivaut à un objet spécifié. (Hérité de Attribute.)
Méthode publique GetHashCode Retourne le code de hachage de cette instance. (Hérité de Attribute.)
Méthode publique GetType Obtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode publique IsDefaultAttribute En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut pour la classe dérivée. (Hérité de Attribute.)
Méthode publique Match En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié. (Hérité de Attribute.)
Méthode publique ToString Retourne une chaîne qui représente l'objet actif. (Hérité de Object.)

Début

Implémentations d'interface explicite

  Nom Description
Implémentation d'interface expliciteMéthode privée _Attribute.GetIDsOfNames Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch. (Hérité de Attribute.)
Implémentation d'interface expliciteMéthode privée _Attribute.GetTypeInfo Récupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface. (Hérité de Attribute.)
Implémentation d'interface expliciteMéthode privée _Attribute.GetTypeInfoCount Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1). (Hérité de Attribute.)
Implémentation d'interface expliciteMéthode privée _Attribute.Invoke Fournit l'accès aux propriétés et aux méthodes exposées par un objet. (Hérité de Attribute.)

Début

Notes

Visual Studio 2012 exécute des tests soit dans le dossier dans lequel vous les avez générés ou un dossier de déploiement distinct qui est unique à la série de tests.Si un dossier de déploiement est utilisé, le moteur de test crée un dossier de déploiement et copiez -y les assemblys contenant le code de test, l'application, et tous les assemblys qu'ils référencent.

Mais certains tests requièrent des fichiers supplémentaires, tels que les tests, les fichiers de configuration, les bases de données, ou des assemblys chargés explicitement.Pour rendre ces fichiers disponibles pendant le test, vous devez spécifier qu'ils doivent être copiés avec les assemblys de test.Voici la meilleure façon de faire ceci :

  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.

  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 pouvez préférer ne pas le faire si vous souhaitez pouvoir examiner les fichiers de données après une série de tests.

    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.

Dans une série de tests, tous les éléments des tests qui doivent être exécutés sont déployés avant que tout test est démarré.

Pour plus d'informations, consultez Comment : déployer des fichiers pour les tests.

DeploymentItemAttribute deux paramètres :

  • Chemin d'accès d'élément source est relative au dossier de sortie de génération.Ce peut être un fichier ou dossier.Pour éviter la dépendance sur votre structure de projet, entrez l'élément dans votre dossier de sortie de génération dans le cadre de le processus de génération.Utilisez l'attribut de l'élément de déploiement pour le déploiement à partir de celui-ci.

  • Ciblez le chemin d'accès du répertoire (facultatif) doit être un dossier, et il est relatif au répertoire de déploiement.Si le dossier n'existe pas, il sera créé.La valeur par défaut est le répertoire de déploiement.

    Vous ne pouvez pas modifier le nom de fichier à l'aide de DeploymentItem.

Les exemples suivants illustrent l'utilisation d' DeploymentItemAttribute:

  • [DeploymentItem("file1.xml")]
    Copie file1.xml du répertoire de sortie de génération au répertoire de déploiement.

  • [DeploymentItem(@"Testfiles\")]
    Copie tous les fichiers et les dossiers dans le dossier de Testfiles du dossier de sortie de la génération dans le dossier de déploiement.Les sous-dossiers sont reproduits dans le dossier de déploiement.

  • [DeploymentItem("file2.xml", "DataFiles")]
    Crée un dossier nommé DataFiles dans le dossier de déploiement, et copie file2.xml du dossier de sortie de la génération des fichiers de données.

    [!REMARQUE]

    Si vous utilisez le deuxième paramètre, il doit toujours être le chemin d'accès d'un dossier, jamais un fichier.Si le dossier n'existe pas, il sera créé.Vous ne pouvez pas modifier le nom du fichier à l'aide de DeploymentItem.

  • [DeploymentItem(@"Resources\file2.xml", "DataFiles")]
    Crée un dossier nommé DataFiles dans le dossier de déploiement s'il n'existe pas.Copie file2.xml du dossier de ressources sous le dossier de sortie de la génération des fichiers de données.Notez que le fichier de ressources n'est pas dupliquée dans le dossier de destination.

  • [DeploymentItem(@"TestFiles\", "TestFiles")]
    Copie le contenu de TestFiles dans un sous-dossier du dossier de déploiement.Les sous-dossiers sont reproduits dans la destination.

  • [DeploymentItem(@"..\..\file1.xml")] (non recommandé)
    Copie d'un élément du répertoire du projet.Cet exemple illustre la structure de projet classique dans laquelle le répertoire de sortie est, par exemple, dans le dossier bin\debug.

    Au lieu de vous reposer sur la structure de projet de cette façon, affectez à la propriété Copiez pour sortir du fichier.Déployez le fichier du répertoire de sortie de génération.

  • [DeploymentItem(@"C:\MyDataFiles\")]
    Copie le contenu du dossier de MyDataFiles dans le dossier de déploiement.

  • (Si vous utilisez un fichier d' .testsettings ) [DeploymentItem("%myDir%\myFile.txt")]
    Déploie le fichier myFile.txt si ce fichier existe dans le répertoire auquel %myDir% le résout.

Pour plus d'informations sur l'utilisation d'attributs, consultez Extension des métadonnées à l'aide des attributs.

Exemples

Le test suivant lit les fichiers nommés « test*.xml ».Pour rendre les fichiers disponibles pour le test et à l'application testée, ils sont identifiés à l'aide de DeploymentItemAttribute.La méthode de test vérifiera que les fichiers existent dans le dossier de déploiement, avant de passer sur pour tester l'application.

using System;
using System.IO;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace DeploymentTest
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        // Copy files from build directory:
        [DeploymentItem("test1.xml")]
        [DeploymentItem("test2.xml", "Data")]
        // Copy files from Resources subdirectory:
        [DeploymentItem("Resources\\test3.xml")]
        [DeploymentItem("Resources\\test4.xml", "Data")]

        public void ConstructorTest()
        {
            // Verify that the files exist in the deployment directory
            Assert.IsTrue(File.Exists("test1.xml"));
            Assert.IsTrue(File.Exists("Data\\test2.xml"));
            Assert.IsTrue(File.Exists("test3.xml"));
            Assert.IsTrue(File.Exists("Data\\test4.xml"));

            // Now test the application ...
        }
    }
}
Imports System
Imports System.IO
Imports Microsoft.VisualStudio.TestTools.UnitTesting

Namespace DeploymentTest
    <TestClass()> _
    Public Class UnitTest1
        <TestMethod()> _
        <DeploymentItem("test1.xml")> _
        <DeploymentItem("test2.xml", "Data")> _
        <DeploymentItem("Resources\test3.xml")> _
        <DeploymentItem("Resources\test4.xml", "Data")> _
        Sub ConstructorTest()
            Assert.IsTrue(File.Exists("test1.xml"))
            Assert.IsTrue(File.Exists("Data\test2.xml"))
            Assert.IsTrue(File.Exists("test3.xml"))
            Assert.IsTrue(File.Exists("Data\test4.xml"))

            ' Now test the application ...
        End Sub
    End Class
End Namespace

Sécurité des threads

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Voir aussi

Référence

Microsoft.VisualStudio.TestTools.UnitTesting, espace de noms