Das Folgende funktioniert in VS2012 für Testprojekte, die in mehreren Lösungen enthalten sind, ohne eine Testeinstellungsdatei zu verwenden:
1) Ordnen Sie die Dateien und Ordner, die Sie bereitstellen möchten, in einem Ordner im Testprojektverzeichnis an.
2) Erstellen Sie in den Projekteigenschaften einen Post-Build-Schritt
xcopy /Y /S /i "$(ProjectDir)<Project_Folder_Name>\*" "$(TargetDir)<Deployment_Folder_Name>"
$(ProjectDir)
und $(TargetDir)
sind Makros, die von VS interpretiert werden und als solche enthalten sein sollten.
<Project_Folder_Name>
ist der Name des in Schritt 1 erstellten Ordners.
<Deployment_Folder_Name>
ist der Name des Ordners, in dem die Testdateien bereitgestellt werden, und sollte so benannt werden, dass er eindeutig ist, wenn mehrere Testprojekte in demselben Verzeichnis bereitgestellt werden, z <Project_Name>_TestInputs
.
Testdateien an freigegebenen Speicherorten sollten auch in den Zielverzeichnis-Bereitstellungsordner kopiert werden, um die Testinteraktionen einzuschränken. Geben Sie den Quellpfad relativ zum $(ProjectDir)
Makro an. Zum Beispiel "$(ProjectDir)..\..\Common Files\C1219TDL-2008.xml"
.
3) Fügen Sie [DeploymentItem(source, destination)]
entweder jeder Testmethode, die eine Bereitstellungsdatei verwendet (Best Practice) oder der Testklasse (einfachere Übung für Faule oder Eilige), eine Eigenschaft hinzu und aktualisieren Sie ein Projekt am einfachsten über die zuvor verwendeten relativen Pfade oder eine Testeinstellungsdatei ).
Bei einer Testmethode source
ist dies der Pfad zu der Datei oder dem Verzeichnis, die bzw. das in der Testmethode verwendet wird, relativ zum Zielverzeichnis, wie von erstellt, xcopy
und destination
der Pfad zu dem Verzeichnis, in dem es relativ zum Bereitstellungsverzeichnis erstellt wird. Damit die Tests entweder im Zielverzeichnis oder in einem Bereitstellungsverzeichnis konsistent ausgeführt werden. Der Zielpfad sollte mit dem Quellpfad ohne Dateiverweis identisch sein. Beispiel : [DeploymentItem("Example_TestInputs\C1219TDL-2008.xml","Example_TestInputs")]
. Das DeploymentItem
sollte in jeder Methode enthalten sein, die diese Datei oder dieses Verzeichnis verwendet.
In einer Klasse source
und destination
sind beide der Name des Ordners, der im Zielverzeichnis von erstellt wurde xcopy
; Dadurch wird der gesamte Ordner in das Bereitstellungsverzeichnis kopiert, wenn ein Test in der Klasse ausgeführt wird. Beispiel:[DeploymentItem("Example_TestInputs","Example_TestInputs")]
4) In den Testmethoden können Sie jetzt sicher auf Dateien und Verzeichnisse zugreifen, die sich im Arbeitsverzeichnis befinden, unabhängig davon, wo Visual Studio sie an diesem Tag abgelegt hat, z File.Exists(".\Example_TestInputs\C1219TDL-2008.xml")
.