Condividi tramite


Classe DeploymentItemAttribute

Aggiornamento: novembre 2007

Viene utilizzata per specificare gli elementi di distribuzione come file o directory per la distribuzione per test. La classe non può essere ereditata.

Spazio dei nomi:  Microsoft.VisualStudio.TestTools.UnitTesting
Assembly:  Microsoft.VisualStudio.SmartDevice.UnitTestFramework (in Microsoft.VisualStudio.SmartDevice.UnitTestFramework.dll)

Sintassi

<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

Note

In base alle impostazioni di configurazione di esecuzione dei test, Visual Studio Team System 2008 Test Edition esegue i test nella cartella in cui sono stati creati o in una cartella di "distribuzione" separata. Per ulteriori informazioni sulla configurazione delle impostazioni di esecuzione dei test, vedere Procedura: configurare la distribuzione dei test.

In questa sezione viene illustrato il caso in cui Visual Studio Team System 2008 Test Edition esegue i test in una cartella diversa da quella che contiene gli assembly compilati.

Quando il test viene eseguito in questo modo, gli assembly di test e di codice sotto test e gli elementi di distribuzione vengono collocati in una cartella di distribuzione di test univoca per tale esecuzione di test. Questo attributo identifica i file e le directory che contengono i file utilizzati per l'esecuzione del test distribuito. Tramite il motore di test viene creata una copia degli elementi di distribuzione, che viene posizionata in una directory di distribuzione di test basata sull'oggetto OutputDirectory specificato o nella directory predefinita. Per ulteriori informazioni, vedere Distribuzione dei test.

È possibile specificare questo attributo in un metodo o in una classe di test. Tuttavia, questo attributo non viene ereditato dalle classi derivate.

Possono essere presenti più istanze dell'attributo in modo da specificare più di un elemento. Il percorso dell'elemento può essere relativo o assoluto. I percorsi relativi sono relativi all'impostazione RelativePathRoot reperibile nel file .testrunconfig.

Negli esempi riportati di seguito viene illustrato l'utilizzo diverso della classe DeploymentItemAttribute:

  • [DeploymentItem("file1.xml")]    Distribuisce un elemento denominato file1.xml collocato in RelativeRootPath. Il file viene distribuito alla directory di distribuzione principale.

  • [DeploymentItem("file2.xml", "DataFiles")]    Distribuisce un elemento denominato file2.xml collocato in RelativeRootPath. Il file viene distribuito alla sottodirectory DataFiles della directory di distribuzione principale.

  • [DeploymentItem("C:\\MyDataFiles\\")]    Distribuisce tutti gli elementi e le directory presenti nella directory MyDataFiles. In questo modo la directory MyDataFiles non viene creata sotto la directory di distribuzione. Tutti i file e le directory all'interno di MyDataFiles verranno distribuite alla directory di distribuzione principale. Per copiare l'intera struttura della directory MyDataFiles, è necessario specificare MyDataFiles come directory di output.

  • [DeploymentItem("%myDir%\myFile.txt")]    Distribuisce il file myFile.txt se esiste nella directory in cui si risolve %myDir%.

Per ulteriori informazioni sulla modalità di utilizzo degli attributi, vedere Estensione di metadati mediante attributi.

Esempi

La classe seguente crea un file che verrà utilizzato dal metodo di 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 di test seguente contiene un metodo di test che creerà un'istanza della classe Car che a sua volta creerà un file denominato "testFile1.txt". Questo file verrà distribuito così come identificato nella classe DeploymentItemAttribute. Successivamente, il metodo di test verificherà l'esistenza del file nella stessa directory dell'assembly di 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

Gerarchia di ereditarietà

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

Codice thread safe

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Vedere anche

Riferimenti

Membri DeploymentItemAttribute

Spazio dei nomi Microsoft.VisualStudio.TestTools.UnitTesting

Altre risorse

Procedura: configurare la distribuzione dei test