Ich habe einen Test, bei dem eine XML-Datei eingelesen und dann analysiert werden muss. Wie kann ich diese Datei jedes Mal in den Testlaufordner kopieren lassen?
Die XML-Datei ist auf "Kopieren, wenn neuer" und den Kompilierungsmodus "Keine" eingestellt (da dies nicht wirklich kompilierbar ist).
visual-studio
mstest
Aaron Powell
quelle
quelle
Wenn Sie eine TestSettings-Datei für die Lösung bereitstellen, können Sie anscheinend die Option "Bereitstellung aktivieren" deaktivieren und verhindern, dass mstest versucht, in dem
...TestResults\...\out
Ordner ausgeführt zu werden, in dem Ihre zusätzlichen Dateien nicht kopiert werden (es sei denn, Sie machen sie zu einer Bereitstellungsoption). .Dies ist auch nützlich, wenn Sie davon abhängen, dass sich die zusätzlichen Dateien in einer beibehaltenen Ordnerstruktur befinden, da Bereitstellungselemente scheinbar alle direkt (flach) in den temporären Ausführungsordner (out) kopiert werden, wenn Sie die Option Bereitstellung, Ordner hinzufügen in den Testeinstellungen verwenden ( Die obigen Antworten legen nahe, dass Sie die Struktur beibehalten können, wenn Sie jedes Element als eigenes DeploymentItem hinzufügen.
Bei mir funktionierte es einwandfrei, Tests direkt in Visual Studio auszuführen (dh meine zusätzlichen Dateien in ihrer Struktur wurden gefunden und von Tests verwendet), da ich vor langer Zeit aus einem anderen Grund eine TestSettings-Datei erstellt hatte (bei der die Bereitstellung aktiviert ist), jedoch nicht bei TeamCity hat mstest ausgeführt, um Tests auszuführen, da ich nicht angegeben habe, dass die TestSettings-Datei verwendet werden soll.
Um eine TestSettings-Datei in Visual Studio zu erstellen, klicken Sie mit der rechten Maustaste auf die Lösung, wählen Sie Neues Element und wählen Sie die TestSettings-Vorlage aus. Um die TestSettings-Datei an der Eingabeaufforderung von mstest.exe zu verwenden, fügen Sie die Option hinzu
/testsettings:C:\Src\mySolution\myProject\local.testsettings
(oder fügen Sie sie als zusätzliche Befehlszeilenoption in TeamCity mit dem entsprechenden Pfad hinzu).quelle
Die Preet-Antwort wird verwendet, um Elemente für einen einzelnen Test bereitzustellen. Wenn Sie dies auf Lösungsebene tun möchten, verwenden Sie die .testrunconfig-Einstellungen .
quelle
Die beste Lösung für mich ist die Verwendung von Testeinstellungen, insbesondere wenn mehrere Tests dieselben Datendateien benötigen.
Erstellen Sie zunächst eine Testeinstellungsdatei und fügen Sie die erforderlichen Bereitstellungselemente hinzu (Datei- oder Ordnername):
Verwenden Sie in Visual Studio "Testeinstellungsdatei auswählen" im Menü "Test \ Testeinstellungen", um neue Testeinstellungen auszuwählen
Wenn Sie mstest ausführen, verwenden Sie den Parameter / testsettings, damit mstest Ihre Testeinstellungen verwendet.
quelle
Sie können DeploymentItem in einer Klasse definieren, die eine Methode mit dem AssemblyInitialize-Attribut enthält. Dann sind Sie sicher, dass die Dateien kopiert werden, unabhängig davon, welchen Test Sie ausführen.Leider wird das DeploymentItem-Attribut nur für Klassen ausgeführt, die Tests enthalten, die Sie ausführen. Wenn Sie also 10 Testklassen haben, die denselben Satz von Dateien verwenden, müssen Sie das Attribut allen hinzufügen.
Es wurde auch festgestellt, dass Änderungen in * .testsettings-Dateien in Visual Studio nicht automatisch aktualisiert werden. Daher müssen Sie nach dem Hinzufügen von Dateien / Ordnern zur Bereitstellung in Testeinstellungen die Lösungsdatei erneut öffnen und dann die Tests ausführen.
quelle
In Visual Studio 2012 wird vstest.console.exe (der integrierte Testläufer) mit dem Ausgabeverzeichnis als aktuellem Pfad ausgeführt. Dies bedeutet, dass Sie die Elemente nur mit der Eigenschaft "Immer kopieren" oder "Wenn neuer kopieren" in Ihre Lösung aufnehmen müssen, damit sie von Ihrem Test verwendet werden können. Sie benötigen das DeploymentItem-Attribut für den allgemeinen Fall nicht. Gleiches gilt, wenn Sie vstest.console.exe über die Befehlszeile in Ihrem Ausgabe- / Testverzeichnis ausführen.
In einigen Fällen wird ein separater Ordner verwendet. Einer davon ist, wenn Sie das DeploymentItem-Attribut verwenden. Sehen Sie hier für weitere Informationen.
quelle