Share via


DeploymentItemAttribute-Klasse

Geben Sie eine Datei oder 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

Object
  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 Element an, das bereitgestellt werden muss, bevor ein Testlauf gestartet wird.
Öffentliche Methode DeploymentItemAttribute(String, String) Gibt ein Element an, das bereitgestellt werden muss, bevor ein Testlauf gestartet wird.

Zum Seitenanfang

Eigenschaften

  Name Beschreibung
Öffentliche Eigenschaft OutputDirectory Ruft den Pfad des Verzeichnisses ab, dem 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 System#Runtime#InteropServices#_Attribute#GetIDsOfNames Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu. (Von Attribute geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode System#Runtime#InteropServices#_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 System#Runtime#InteropServices#_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 System#Runtime#InteropServices#_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 sie erstellt haben oder in einem separaten Bereitstellungsordner, der dem Testlauf eindeutig ist. Wenn einem Bereitstellungsordner verwendet wird, stellt das Testmodul einen Bereitstellungsordner erstellt und kopiert in ihn die Assembly, die den Testcode enthalten, die Anwendung und alle Assemblys, die darauf verweisen.

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. Dies ist die beste Methode, hierzu:

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

    • Wenn sie einem Testprojekt spezifisch sind, schließen Sie sie als Inhaltsdateien im Visual Studio-Testprojekt ein. Wählen Sie sie im Projektmappen-Explorer aus und legen Sie die Eigenschaft In Ausgabeverzeichnis kopieren auf Kopieren, wenn neuer fest.

    • Andernfalls definieren Sie eine Postbuildaufgabe, die Dateien in das Buildausgabeverzeichnis kopiert. Beispiele:

      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 der Postbuildereignis Kopierbefehl dem Feld hinzu.

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

  3. Verwenden Sie Komponententests, die direkt im Buildausgabeverzeichnis auszuführen, damit Tests schnell ausgeführt wird. Dies ist auf dem Buildserver besonders nützlich, wenn Sie die Tests überprüft haben. Sie hierzu, einer .runsettings Datei der Projektmappe, Include- <DeploymentEnabled>False</DeploymentEnabled> hinzu, und die Datei im Test, Menü Testeinstellungen auswählen. Derselbe Effekt tritt in jedem Testlauf auf, in dem DeploymentItemAttribute gar nicht verwendet wird.

    jedoch trotzdem ratsam sein, vor nicht dazu verwendet werden, wenn Sie möchten, um die Datendateien nach einer fehlerhaften Ausführung sicherzustellen.

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

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

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

DeploymentItemAttribute verfügt über zwei Parameter:

  • Quellelementpfad steht im Verhältnis zu dem Buildausgabeordner. Es kann eine Datei oder ein Ordner sein. Um von der Projektstruktur zu vermeiden, wird das Element in das Buildausgabeverzeichnis als Teil des Buildprozesses. Verwenden Sie das Bereitstellungselementattribut, um ihn von dort bereitgestellt.

  • (Optional) Zielverzeichnispfad muss ein Ordner sein, und er ist relativ zum Bereitstellungsverzeichnis. Wenn der Ordner noch nicht vorhanden ist, wird er erstellt. Der Standardwert ist Bereitstellungsverzeichnis.

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

Die folgenden Beispiele veranschaulichen die Verwendung von DeploymentItemAttribute:

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

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

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

    Hinweis

    Wenn Sie den zweiten Parameter verwenden, muss der Pfad eines Ordners, niemals eine Datei immer sein.Wenn der Ordner noch 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 im Ressourcenordner unter dem Buildausgabeordner in Dateien. Beachten Sie, dass der nicht im Ressourcenordner 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. Dieses Beispiel wird die typische Projektstruktur, an der das Ausgabeverzeichnis ist, beispielsweise im bin\Debug.

    Anstatt, auf die Projektstruktur auf diese Weise zu stützen fest, legen Sie die Eigenschaft In Ausgabeverzeichnis 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")]
    Enthält die Datei myFile.txt bereitgestellt, wenn diese Datei im Verzeichnis vorhanden ist, zu dem %myDir% aufgelöst wird.

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 auszuführen dem Test und verfügbar für die getestete Anwendung, werden sie identifiziert indem DeploymentItemAttribute verwendet. Die Testmethode überprüft, ob die Dateien im Bereitstellungsverzeichnis vorhanden sind, bevor sie fortgesetzt, 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