Condividi tramite


Classe DeploymentItemAttribute

Specificare un file o una directory che devono essere implementati con assembly prima di eseguire un test.Aggiungere questo attributo a una classe di test o a un metodo di test.È possibile utilizzare più istanze.Questo attributo non viene ereditato.

Gerarchia di ereditarietà

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

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

Sintassi

'Dichiarazione
<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

Il tipo DeploymentItemAttribute espone i seguenti membri.

Costruttori

  Nome Descrizione
Metodo pubblico DeploymentItemAttribute(String) Specifica un elemento da distribuire prima di un'esecuzione del test.
Metodo pubblico DeploymentItemAttribute(String, String) Specifica un elemento da distribuire prima di un'esecuzione del test.

In alto

Proprietà

  Nome Descrizione
Proprietà pubblica OutputDirectory Ottiene il percorso della directory in cui l'elemento viene copiato.
Proprietà pubblica Path Ottiene il percorso del file di origine o della cartella da copiare.
Proprietà pubblica TypeId Quando implementato in una classe derivata, ottiene un identificatore univoco per questa Attribute. (Ereditato da Attribute)

In alto

Metodi

  Nome Descrizione
Metodo pubblico Equals Infrastruttura. Restituisce un valore che indica se l'istanza è uguale a un oggetto specificato. (Ereditato da Attribute)
Metodo pubblico GetHashCode Restituisce il codice hash per l'istanza. (Ereditato da Attribute)
Metodo pubblico GetType Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object)
Metodo pubblico IsDefaultAttribute Una volta sottoposto a override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata. (Ereditato da Attribute)
Metodo pubblico Match Una volta sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato. (Ereditato da Attribute)
Metodo pubblico ToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)

In alto

Implementazioni esplicite dell'interfaccia

  Nome Descrizione
Implementazione esplicita dell'interfacciaMetodo privato _Attribute.GetIDsOfNames Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch. (Ereditato da Attribute)
Implementazione esplicita dell'interfacciaMetodo privato _Attribute.GetTypeInfo Recupera le informazioni sui tipi per un oggetto, che può essere utilizzato per ottenere informazioni sul tipo per un'interfaccia. (Ereditato da Attribute)
Implementazione esplicita dell'interfacciaMetodo privato _Attribute.GetTypeInfoCount Recupera il numero di interfacce di informazioni sui tipi che un oggetto garantisce (0 o 1). (Ereditato da Attribute)
Implementazione esplicita dell'interfacciaMetodo privato _Attribute.Invoke Fornisce l'accesso a proprietà e metodi esposti da un oggetto. (Ereditato da Attribute)

In alto

Note

Visual Studio 2012 esegue i test o nella cartella in cui sono stati compilata o in una cartella separata di distribuzione univoche all'esecuzione dei test.Se una cartella di distribuzione viene utilizzato, il motore di test creata una cartella e le copie di distribuzione negli assembly contenenti codice di test, l'applicazione e gli assembly che fanno riferimento a.

Ma alcuni test richiedono i file aggiuntivi, ad esempio dati di test, i file di configurazione, i database, o assembly in modo esplicito caricati.Per rendere questi file durante un test, è necessario specificare che vengano copiati anche gli assembly di test.Questa è la migliore modi:

  1. Copiare i file nella directory di destinazione build come parte del processo di compilazione.

    • Se sono specifici di un progetto di test, includerli come file di dati nel progetto di test Visual Studio.Selezionarli in Esplora soluzioni e impostare la proprietà Copia in directory di output su Copia se più recente.

    • In caso contrario, definire un'attività post-compilazione copiare i file nella directory di output di compilazione.Ad esempio:

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

      Aprire le proprietà del progetto di test.In un progetto c, aprire la pagina Eventi di compilazione.In un progetto di Visual Basic., aprire la pagina Compilazione e scegliere Eventi di compilazione.Aggiungere il comando di copia nel campo Evento di post-generazione.

  2. Utilizzare DeploymentItemAttribute sui metodi di test o sulle classi di test per specificare i file e le cartelle che devono essere copiati nella directory di output di compilazione nella directory di distribuzione.

  3. Considerare la possibilità di eseguire unit test direttamente nella directory di output di compilazione, in modo che il test viene eseguito più velocemente.Ciò è particolarmente utile il server di compilazione dopo avere archiviato i test.A tale scopo, aggiungere un file di .runsettings alla soluzione, importare <DeploymentEnabled>False</DeploymentEnabled>e selezionare il file in Prova, menu Prova impostazioni.Lo stesso effetto si verifica nei test in cui DeploymentItemAttribute non viene utilizzato alcun.

    Tuttavia, è preferibile non eseguire questa operazione se si desidera poter controllare i file di dati dopo un'esecuzione non riuscita.

    Non è possibile evitare l'utilizzo di una cartella di distribuzione se si utilizza un file di .testsettings, richiesto per il web e i test di carico, test codificati dell'interfaccia utente e i test in cui si distribuisce un'applicazione nei computer remoti.

In un'esecuzione, tutti gli elementi nei test che devono essere eseguiti vengono implementati prima che il test sia avviato.

Per ulteriori informazioni, vedere Procedura: distribuire file per test.

DeploymentItemAttribute dispone di due parametri:

  • Percorso di origine dell'elemento è relativo alla cartella di output di compilazione.Può essere un file o una cartella.Per evitare la dipendenza dalla struttura del progetto, spostare l'elemento nella directory di output di compilazione come parte del processo di compilazione.Utilizzare l'attributo dell'elemento di distribuzione per la distribuzione.

  • Percorso directory di destinazione (facoltativo) deve essere una cartella ed è relativo alla directory di distribuzione.Se la cartella non esiste, viene creata.Il valore predefinito è la directory di distribuzione.

    Non è possibile modificare il nome file utilizzando DeploymentItem.

Negli esempi seguenti viene illustrato l'utilizzo di DeploymentItemAttribute:

  • [DeploymentItem("file1.xml")]
    Copia file1.xml dalla directory di output di compilazione nella directory di distribuzione.

  • [DeploymentItem(@"Testfiles\")]
    Copia tutti i file e cartelle nella cartella di Testfiles dalla cartella di output di compilazione nella cartella di distribuzione.Le sottocartelle vengono replicate nella cartella di distribuzione.

  • [DeploymentItem("file2.xml", "DataFiles")]
    Crea una cartella denominata DataFiles la cartella di distribuzione e copia file2.xml dalla cartella di output di compilazione a file di dati.

    [!NOTA]

    Se si utilizza il secondo parametro, deve essere sempre il percorso di una cartella, mai un file.Se la cartella non esiste, viene creata.Non è possibile modificare il nome del file tramite DeploymentItem.

  • [DeploymentItem(@"Resources\file2.xml", "DataFiles")]
    Crea una cartella denominata DataFiles la cartella di distribuzione se non esiste.Copia file2.xml dalla cartella delle risorse nella cartella di output di compilazione a file di dati.Si noti che la cartella delle risorse non viene duplicata nella cartella di destinazione.

  • [DeploymentItem(@"TestFiles\", "TestFiles")]
    Copia il contenuto di TestFiles in una sottocartella della cartella di distribuzione.Le sottocartelle vengono replicate nella destinazione.

  • [DeploymentItem(@"..\..\file1.xml")] (non consigliato)
    Copia un elemento dalla directory del progetto.In questo esempio si presuppone la struttura del progetto tipico in cui la directory di output è, ad esempio, in bin \ debug.

    Anziché basarsi sulla struttura del progetto in questo modo, impostare la proprietà Copia in directory di output del file.Implementare il file della directory di output di compilazione.

  • [DeploymentItem(@"C:\MyDataFiles\")]
    Copia il contenuto della cartella di MyDataFiles la cartella di distribuzione.

  • Se si utilizza un file di .testsettings ) [DeploymentItem("%myDir%\myFile.txt")]
    Implementa il file myFile.txt se il file esiste nella directory in cui %myDir% risolve.

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

Esempi

Il test seguente legge i file denominati "test*.xml".Per rendere i file a test e dell'applicazione sottoposta a test, vengono identificati mediante DeploymentItemAttribute.Il metodo di test consente di verificare che i file siano presenti nella directory di distribuzione, prima di continuare a eseguire l'applicazione.

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

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

Spazio dei nomi Microsoft.VisualStudio.TestTools.UnitTesting