DeploymentItemAttribute, classe

Mise à jour : novembre 2007

Permet de spécifier des éléments de déploiement tels que des fichiers ou des répertoires pour un déploiement de test spécifique. Cette classe ne peut pas être héritée.

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

Syntaxe

<AttributeUsageAttribute(AttributeTargets.Class Or AttributeTargets.Method, AllowMultiple := True)> _
Public NotInheritable Class DeploymentItemAttribute _
    Inherits Attribute

Dim instance As DeploymentItemAttribute
[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
public final class DeploymentItemAttribute extends Attribute

Notes

En fonction de vos paramètres de configuration de série de tests, Visual Studio Team System 2008 Test Edition exécute des tests dans le dossier dans lequel vous les avez créés ou dans un dossier de déploiement distinct. Pour plus d'informations sur la configuration des paramètres de la série de tests, consultez Comment : configurer le déploiement d'un test.

Cette section décrit le cas dans lequel Visual Studio Team System 2008 Test Edition exécute des tests dans un autre dossier que celui qui contient les assemblys générés.

Lorsqu'un test est exécuté de cette manière, le test et les assemblys du code sous le test, ainsi que les éléments du déploiement, sont placés dans un dossier de déploiement du test spécifique à cette série de tests. Cet attribut identifie les fichiers et les répertoires qui contiennent les fichiers qui sont utilisés par le test déployé pour s'exécuter. Le moteur de test effectue une copie des éléments de déploiement et les place dans un répertoire de déploiement de test basé sur le OutputDirectory spécifié ou dans le répertoire par défaut. Consultez Déploiement de test pour plus d'informations.

Cet attribut peut être spécifié sur une méthode ou une classe de test. Toutefois, il n'est pas hérité par les classes dérivées.

Il peut y avoir plusieurs instances de cet attribut pour spécifier plusieurs éléments. Le chemin d'accès de l'élément peut être absolu ou relatif. Les chemins d'accès relatifs sont relatifs au paramètre RelativePathRoot qui figure dans le fichier .testrunconfig.

Les exemples suivants illustrent les différentes utilisations de DeploymentItemAttribute.

  • [DeploymentItem("file1.xml")]   Déploie un élément nommé file1.xml se trouvant dans RelativeRootPath. Le fichier est déployé dans le répertoire racine de déploiement.

  • [DeploymentItem("file2.xml", "DataFiles")]   Déploie un élément nommé file2.xml se trouvant dans RelativeRootPath. Le fichier est déployé dans le sous-répertoire DataFiles du répertoire racine de déploiement.

  • [DeploymentItem("C:\\MyDataFiles\\")]   Déploie tous les éléments et répertoires trouvés dans le répertoire MyDataFiles. Cela ne crée pas de répertoire MyDataFiles sous le répertoire de déploiement. Tous les fichiers et répertoires dans MyDataFiles seront déployés dans le répertoire racine de déploiement. Pour copier la totalité de la structure du répertoire MyDataFiles, vous devez spécifier MyDataFiles comme répertoire de sortie.

  • [DeploymentItem("%myDir%\myFile.txt")]   Déploie le fichier myFile.txt si ce fichier existe dans le répertoire dans lequel %myDir% se résout.

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

Exemples

La classe suivante crée un fichier qui sera utilisé par la méthode de test.

using System;
using System.IO;

namespace CarMaker
{
    public class Car
    {
        private static string make = "myMake";
        private static string model = "myModel";

        public static void CarInfo()
        {
            using (StreamWriter sw = new StreamWriter("testFile1.txt"))
            {
                sw.WriteLine(make);
                sw.WriteLine(model);
            }
        }
    }
}
Imports System
Imports System.IO

Namespace CarMaker
    Public Class Car

        Private Shared make As String = "myMake"
        Private Shared model As String = "myModel"

        Public Shared Sub CarInfo()
            Dim sw As New StreamWriter("testFile1.txt")
            Try
                sw.WriteLine(make)
                sw.WriteLine(model)
            Finally
                sw.Close()
            End Try
        End Sub
    End Class
End Namespace

La classe de test suivante contient une méthode de test qui instanciera la classe Car qui créera un fichier nommé « testFile1.txt ». Ce fichier sera déployé tel qu'identifié dans le DeploymentItemAttribute. Puis, la méthode de test testera si le fichier existe dans le même répertoire que l'assembly de test.

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

namespace DeploymentTest
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod()]
        [DeploymentItem("testFile1.txt")]
        public void ConstructorTest()
        {
            // Create the file to deploy
            Car.CarInfo();
            string file = "testFile1.txt";
            // Check if the created file exists in the deployment directory
            Assert.IsTrue(File.Exists(file), "deployment failed: " + file +
                " did not get deployed");
        }
    }
}
Imports System
Imports System.IO
Imports Microsoft.VisualStudio.TestTools.UnitTesting
Imports MyVBProject.CarMaker

Namespace DeploymentTest
    <TestClass()> _
    Public Class UnitTest1
        <TestMethod()> _
        <DeploymentItem("testFile1.txt")> _
        Sub ConstructorTest()
            Car.CarInfo()
            Dim file As String = "testFile1.txt"
            Assert.IsTrue(IO.File.Exists(file), "deployment failed: " + file + _
                " did not get deployed")
        End Sub
    End Class
End Namespace

Hiérarchie d'héritage

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

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

Membres DeploymentItemAttribute

Microsoft.VisualStudio.TestTools.UnitTesting, espace de noms

Autres ressources

Comment : configurer le déploiement d'un test