Freigeben über


DeploymentItem-Metadaten

DeploymentItem-Metadaten identifizieren Datei- und Ordnerabhängigkeiten für die Dateien und Ordner, die von den Tests während der Ausführung der Tests verwendet werden, sodass Taef diese identifizieren und entsprechend kopieren kann (z. B. in einem computerübergreifenden Ausführungsszenario stellt Taef die von der DeploymentItem-Eigenschaft identifizierten Dateien auf dem angegebenen Testcomputer bereit).

Die Implementierung von Taef DeploymentItem ähnelt der Implementierung in der DeploymentItemAttribute-Klasse in VSTS.

DeploymentItem-Metadaten können entweder auf Assembly-, Klassen- oder Testebene angewendet werden. Die durch DeploymentItem-Metadaten angegebenen Elemente werden durch die zeitkorrespondierende Setupausführung (Assembly, Testklasse oder Test) bereitgestellt. Wenn DeploymentItem-Metadaten eine Abhängigkeit (z. B. eine Datei) angeben und diese Abhängigkeit bereits am Ziel vorhanden ist, führt TAEF einen CRC-Vergleich durch und kopiert die Datei nur, wenn sie geändert wurde. Wenn DeploymentItem-Metadaten eine Abhängigkeit angeben und die Abhängigkeit nicht gefunden werden kann, wird ein Fehler protokolliert, der den Test (oder alle Testklassen- oder Assemblytests entsprechend) fehlschlägt. TAEF stellt Dateien nur einmal pro Assembly, Klasse oder Test bereit. Das heißt, die Bereitstellung erfolgt nicht bei jeder Assembly, Klasse oder Testerweiterung, wenn diese datengesteuert sind.

Syntax

[DeploymentItem("FileOrFolderToDeploy", "DestinationFolder")]

Dabei ist FileOrFolderToDeployeine Datei oder ein Ordnerpfad relativ zum Verzeichnis, in dem sich die Test-DLL befindet. Wenn FileOrFolderToDeploy ein Ordner ist, wird der gesamte Inhalt kopiert. Der Ordner selbst wird jedoch nicht erstellt. Wenn unter FileOrFolderToDeploy eine Ordnerhierarchie vorhanden ist, kopiert Taef alle diese Verzeichnisse rekursiv, wobei die Verzeichnishierarchie beibehalten wird.

DestinationFolder ist ein Ordnerpfad relativ zum Verzeichnis, in dem sich die Test-DLL befindet und in das die Bereitstellungselemente kopiert werden. Der DestinationFolder-Pfad kann mithilfe von angegeben werden. Notation (z. B. .. \MyFiles).

Wenn Sie die Bereitstellung in dem Ordner durchführen möchten, in dem sich Ihre Test-DLL befindet, können Sie DestinationFolder weglassen.

[DeploymentItem("FileOrFolderToDeploy")]

Mehrere Teile der Eigenschaft werden unterstützt. Beispiel:

[TestClass]
[DeploymentItem("file1.xml")]
[DeploymentItem("file2.xml")]
[DeploymentItem("file3.xml")]
public class UnitTest1
{
    ...
}

Beispiele

[DeploymentItem("file1.xml")]  

Tags file1.xml, die sich neben der Test-DLL befindet, als Abhängigkeit. Diese Metadaten können so interpretiert werden, dass das System ein Element namens file1.xml im Ordner neben der Test-DLL im Verzeichnis der Test-DLL bereitstellt. Diese Konfiguration ist nur für computerübergreifende Szenarien nützlich.

[DeploymentItem("file2.xml", "DataFiles")]

Stellt ein Element namens file2.xml neben der Test-DLL im erstellten DataFiles-Unterverzeichnis im Test-DLL-Verzeichnis bereit.

[DeploymentItem("C:\\\\MyDataFiles\\\\MyDataFiles2\\\\")]  

Stellt alle Elemente und Verzeichnisse bereit, die sich im Verzeichnis C:\\MyDataFiles\\MyDataFiles2\\ befinden. Diese Konfiguration erstellt nicht das Verzeichnis MyDataFiles\MyDataFiles2 unterhalb des Bereitstellungsverzeichnisses. Alle Dateien und Verzeichnisse in MyDataFiles werden im DLL-Testverzeichnis bereitgestellt. Um die gesamte Verzeichnisstruktur MyDataFiles\MyDataFiles2 zu kopieren, müssen Sie MyDataFiles\MyDataFiles2 als Ausgabeverzeichnis angeben.

[DeploymentItem("%myDir%\\myFile.txt")]

Stellt die Datei myFile.txt bereit, wenn diese Datei in dem Verzeichnis vorhanden ist, in das %myDir% aufgelöst wird. Wenn TAEF die Umgebungsvariable nicht auflösen kann, wird ein Fehler ausgelöst.

Verwaltete Tests

Das DeploymentItem-Attribut (auch als DeploymentItemAttribute bezeichnet) kann auf eine Testmethode (ergänzt durch das [TestMethod]-Attribut), eine Testklasse (ergänzt durch das [TestClass]-Attribut) oder eine Testassembly angewendet werden. Da VSTS diese Eigenschaft auf Assemblyebene jedoch nicht unterstützt, müssen Sie diese Eigenschaft auf Assemblyebene anwenden, um diese Eigenschaft auf Assemblyebene anzuwenden(ergänzt durch assemblyInitialize-Attribut):

[AssemblyInitialize]
[DeploymentItem("file1.xml")]
[DeploymentItem("file2.xml")]
[DeploymentItem("file3.xml")]
public  static AssemblySetup(TestContext testContext)
{
    ...
}

Native Tests

Bei nativen Tests ähnelt das Eigenschaftenformat dem Format für verwalteten Code. Da native Eigenschaften jedoch nur über einen einzelnen Wert verfügen, werden der Elementpfad und das optionale Ziel im Eigenschaftswert angegeben, getrennt durch ein ">" -Zeichen:

BEGIN_TEST_CLASS(TestClassExample)
    TEST_CLASS_PROPERTY(L"DeploymentItem", L"C:\\Dependencies\\>Dependencies")
END_TEST_CLASS()

Skripttests

Bei Skripttests ist das Eigenschaftenformat identisch mit dem für native Tests:

<method name="TestOne">
    <TestMethodProperty name="DeploymentItem" value="C:\\Dependencies\\>Dependencies"/>
</method>