Freigeben über


DeploymentItemAttribute-Klasse

Geben Sie eine Datei oder ein Verzeichnis an, die zusammen mit den Assemblys bereitgestellt werden sollten, bevor Sie einen Test ausführt.Fügen Sie dieses Attribut auf eine Testklasse oder eine Testmethode an.Sie können mehrere Instanzen verwenden.Dieses Attribut wird nicht geerbt.

Vererbungshierarchie

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

Namespace:  Microsoft.VisualStudio.TestTools.UnitTesting
Assembly:  Microsoft.VisualStudio.QualityTools.UnitTestFramework (in Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll)

Syntax

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

Der DeploymentItemAttribute-Typ macht die folgenden Member verfügbar.

Konstruktoren

  Name Beschreibung
Öffentliche Methode DeploymentItemAttribute(String) Gibt ein bereitgestellt werden an Element, bevor Start eines Testlaufs.
Öffentliche Methode DeploymentItemAttribute(String, String) Gibt ein bereitgestellt werden an Element, bevor Start eines Testlaufs.

Zum Seitenanfang

Eigenschaften

  Name Beschreibung
Öffentliche Eigenschaft OutputDirectory Ruft den Pfad des Verzeichnisses ab, auf den das Element kopiert wird.
Öffentliche Eigenschaft Path Ruft den Pfad der kopiert werden Quelldatei ab oder des Ordners.
Öffentliche Eigenschaft TypeId Bei Implementierung in einer abgeleiteten Klasse wird ein eindeutiger Bezeichner für dieses Attribute abgerufen. (Von Attribute geerbt.)

Zum Seitenanfang

Methoden

  Name Beschreibung
Öffentliche Methode Equals Infrastruktur. Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist. (Von Attribute geerbt.)
Öffentliche Methode GetHashCode Gibt den Hashcode für diese Instanz zurück. (Von Attribute geerbt.)
Öffentliche Methode GetType Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Öffentliche Methode IsDefaultAttribute Beim Überschreiben in einer abgeleiteten Klasse wird angegeben, ob der Wert dieser Instanz der Standardwert für die abgeleitete Klasse ist. (Von Attribute geerbt.)
Öffentliche Methode Match Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht. (Von Attribute geerbt.)
Öffentliche Methode ToString Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)

Zum Seitenanfang

Explizite Schnittstellenimplementierungen

  Name Beschreibung
Explizite SchnittstellenimplementierungPrivate Methode _Attribute.GetIDsOfNames Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu. (Von Attribute geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode _Attribute.GetTypeInfo Ruft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können. (Von Attribute geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode _Attribute.GetTypeInfoCount Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1). (Von Attribute geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode _Attribute.Invoke Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit. (Von Attribute geerbt.)

Zum Seitenanfang

Hinweise

Visual Studio 2012 Tests entweder im Ordner, in dem sie erstellt oder in einem separaten Bereitstellungsordner, der dem Testlauf eindeutig ist.Wenn ein Bereitstellungsordner verwendet wird, erstellt das Testmodul einen Bereitstellungsordner und -Kopien in der Assembly, die den Testcode, die Anwendung und alle Assemblys, auf die sie verweisen, enthalten.

Einige Tests erfordern zusätzliche Dateien, wie Testdaten, Konfigurationsdateien, Datenbanken oder explizit geladene Assemblys.Um diese Dateien bereitzustellen während des Tests müssen Sie angeben, ob diese zusammen mit den Testassemblys kopiert werden sollen.Hier ist die beste Methode, hierzu:

  1. Kopieren Sie die Dateien in dem Buildzielverzeichnis als Teil des Buildprozesses.

    • Wenn sie einem Testprojekt spezifisch sind, schließen Sie sie als Inhaltsdateien in Visual Studio-Testprojekt ein.Wählen Sie sie im Projektmappen-Explorer auswählen und die - Eigenschaft auf In Ausgabe kopierenKopieren, wenn neuer fest.

    • Andernfalls definieren Sie eine Postbuildaufgabe, die Dateien in das Buildausgabeverzeichnis zu kopieren.Beispiel:

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

      Öffnen Sie die Projekteigenschaften des Testprojekts.In einem C#-Projekt öffnen Sie die Seite Buildereignisse.In einem Visual Basic-Projekt öffnen Sie die Seite Kompilieren und wählen Sie Buildereignisse aus.Fügen Sie den Kopierbefehl dem Feld Postbuildereignis hinzu.

  2. Verwenden Sie DeploymentItemAttribute für Testmethoden oder testen Sie Klassen, um die Dateien und Ordner anzugeben, die von Buildausgabeverzeichnis in den Bereitstellungsordner kopiert werden sollen.

  3. Erwägen Sie, die Komponententests direkt im Buildausgabeverzeichnis ausführen, sodass Tests schnell ausgeführt wird.Dies ist auf dem Buildserver besonders nützlich, nachdem Sie die Tests überprüft haben.Sie dazu, eine .runsettings Datei der Projektmappe, Include- <DeploymentEnabled>False</DeploymentEnabled> hinzufügen, und die Datei in Test, Menü Testeinstellungen auswählen.Derselbe Effekt tritt in einem Testlauf auf, in dem DeploymentItemAttribute überhaupt verwendet wird.

    jedoch trotzdem ratsam sein, es vor nicht dazu verwendet werden, wenn Sie möchten, die Datendateien nach einer fehlgeschlagene Ausführung zu überprüfen.

    Sie können keinen, Bereitstellungsordner auf verwenden vermeiden erforderlich ist, wenn Sie eine .testsettings Datei verwenden, die für Internet und Auslastungstests, Tests der codierten UI, und jeder Test, in dem Sie eine Anwendung auf Remotecomputern bereitstellen.

In einem Testlauf werden alle Elemente in den Tests, die ausgeführt werden sollen, bereitgestellt, bevor ein Test gestartet wird.

Weitere Informationen finden Sie unter Gewusst wie: Bereitstellen von Dateien für Tests.

DeploymentItemAttribute verfügt über zwei Parameter:

  • Quellelementpfad ist relativ zum Buildausgabeordner.Es kann eine Datei oder ein Ordner sein.Um Abhängigkeit auf der Projektstruktur zu vermeiden, verschieben Sie das Element in das Buildausgabeverzeichnis als Teil des Buildprozesses.Verwenden Sie das Bereitstellungselementattribut, um es dort bereitzustellen.

  • (Optional) Richten Sie Verzeichnispfad an muss ein Ordner sein, und es ist relativ zum Bereitstellungsverzeichnis.Wenn der Ordner nicht vorhanden ist, wird er erstellt.Der Standardwert ist Bereitstellungsverzeichnis.

    Sie können den Dateinamen ändern, indem Sie DeploymentItem-Attribut verwenden.

Die folgenden Beispiele zeigen die Verwendung DeploymentItemAttribute:

  • [DeploymentItem("file1.xml")]
    Kopiert file1.xml vom Buildausgabeverzeichnis in den Bereitstellungsordner.

  • [DeploymentItem(@"Testfiles\")]
    Kopiert alle Dateien und Ordner im Testfiles-Ordner aus dem Buildausgabeordner im Bereitstellungsordner.Unterordner werden im Bereitstellungsordner repliziert.

  • [DeploymentItem("file2.xml", "DataFiles")]
    Stellt einen Ordner, der DataFiles im Bereitstellungsordner namens und kopiert file2.xml aus dem Buildausgabeordner in den Dateien.

    HinweisHinweis

    Wenn Sie den zweiten Parameter verwenden, muss der Pfad eines Ordners, nie eine Datei immer sein.Wenn der Ordner nicht vorhanden ist, wird er erstellt.Sie können den Namen der Datei ändern, indem Sie DeploymentItem-Attribut verwenden.

  • [DeploymentItem(@"Resources\file2.xml", "DataFiles")]
    Stellt einen Ordner, der DataFiles im Bereitstellungsordner genannt wird, wenn er nicht vorhanden ist.Kopiert file2.xml vom Ressourcenordner unter dem Buildausgabeordner in den Dateien.Beachten Sie, dass der Ressourcenordner nicht im Zielordner dupliziert wird.

  • [DeploymentItem(@"TestFiles\", "TestFiles")]
    Kopiert den Inhalt von TestFiles in einen Unterordner des Bereitstellungsordners.Unterordner werden unter dem Ziel repliziert.

  • [DeploymentItem(@"..\..\file1.xml")] (nicht empfohlen)
    Kopiert ein Element aus dem Projektverzeichnis.In diesem Beispiel werden die typische Projektstruktur an, in der das Ausgabeverzeichnis ist, beispielsweise bin\Debug.

    Anstatt, auf die Projektstruktur auf diese Weise zu verlassen fest, die Eigenschaft In Ausgabe kopieren der Datei.Erstellen Sie die Datei aus dem Buildausgabeverzeichnis bereit.

  • [DeploymentItem(@"C:\MyDataFiles\")]
    Kopiert den Inhalt des MyDataFiles-Ordners in den Bereitstellungsordner.

  • (Wenn Sie eine Datei .testsettings verwenden), [DeploymentItem("%myDir%\myFile.txt")]
    Stellt die Datei myFile.txt bereit, wenn diese Datei im Verzeichnis vorhanden ist, zu dem %myDir% aufgelöst.

Weitere Informationen zum Verwenden von Attributen finden Sie unter Erweitern von Metadaten mithilfe von Attributen.

Beispiele

Der folgende Test liest die Dateien, die "test*.xml" bezeichnet werden.Um die Dateien auf dem Test ausführen und verfügbar für die getestete Anwendung, indem sie identifiziert werden DeploymentItemAttribute verwendet.Die Testmethode überprüft, dass die Dateien im Bereitstellungsverzeichnis vorhanden sein, bevor sie weiterhin, die Anwendung zu testen.

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

Threadsicherheit

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Siehe auch

Referenz

Microsoft.VisualStudio.TestTools.UnitTesting-Namespace