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 | |
---|---|---|
DeploymentItemAttribute(String) | Gibt ein Element an, das bereitgestellt werden muss, bevor ein Testlauf gestartet wird. | |
DeploymentItemAttribute(String, String) | Gibt ein Element an, das bereitgestellt werden muss, bevor ein Testlauf gestartet wird. |
Zum Seitenanfang
Eigenschaften
Name | Beschreibung | |
---|---|---|
OutputDirectory | Ruft den Pfad des Verzeichnisses ab, dem das Element kopiert wird. | |
Path | Ruft den Pfad der kopiert werden Quelldatei ab oder des Ordners. | |
TypeId | Bei Implementierung in einer abgeleiteten Klasse wird ein eindeutiger Bezeichner für dieses Attribute abgerufen. (Von Attribute geerbt.) |
Zum Seitenanfang
Methoden
Name | Beschreibung | |
---|---|---|
Equals | Infrastruktur. Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist. (Von Attribute geerbt.) | |
GetHashCode | Gibt den Hashcode für diese Instanz zurück. (Von Attribute geerbt.) | |
GetType | Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.) | |
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.) | |
Match | Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht. (Von Attribute geerbt.) | |
ToString | Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.) |
Zum Seitenanfang
Explizite Schnittstellenimplementierungen
Name | Beschreibung | |
---|---|---|
System#Runtime#InteropServices#_Attribute#GetIDsOfNames | Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu. (Von Attribute geerbt.) | |
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.) | |
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.) | |
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:
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.
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.
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.