Visual Studio 2010, x64-Maschine, die den integrierten Webserver zum Hosten eines WCF-Dienstes mit einer Reihe von Komponententests mithilfe des integrierten Testframeworks verwendet.Xml-Datei kopiert nicht zum Testen des Ausgabeverzeichnisses
Ich habe eine XML-Datei, die meine Tests zum Ausführen laden müssen. Ich habe diese Datei in das Testprojekt aufgenommen und die Datei auf 'Inhalt' und 'Immer in Ausgabeverzeichnis kopieren' gesetzt. Diese Datei wird in das Verzeichnis bin \ debug fine kopiert.
Wenn ich die Tests ausführen, ist jedoch die XML-Datei nicht vorhanden. Anstatt in den Ordner bin \ debug des Projekts zu schauen, wird im Arbeitsverzeichnis des Tests nach C: \ Projekte \ SAP-Reapprovals \ TestResults \ name_machine 2010-12-06 13_45_43 \ Out gesucht. Die Datei wurde dort nicht kopiert .
zu kopieren gibt es eine Möglichkeit, diese Datei zu zwingen, oder muß ich aus der Prüfung die Referenz vollständig qualifizieren?
TIA!
James
aktualisiert
Ich setze die DeploymentItem
attrib ute, aber die Datei wird immer noch nicht kopiert. Aber das sieht sicher so aus, wie ich will ... irgendwelche Ideen, warum das nicht funktioniert?
Mein Testcode:
[TestMethod]
[DeploymentItem("SAP - GS3 format.xml")]
public void TestProcessSapRoles() {
// I get a 'file not found' error here, and when
// I check the output directory, it isn't there
XElement rolesRoot = XElement.Load("SAP - GS3 format.xml");
}
ANTWORTEN:
Dank CPedros gehen, mit seiner Hilfe habe ich auf dieser ein wenig vergrößert. Ich habe den Process Monitor von SysInternals ausgeführt, um zu sehen, wo er nach meiner XML-Datei gesucht hat. Hier ist, was ich gefunden habe:
Wenn ich die Tests liefen mit Strg + r, Strg + t (Debug-Tests im aktuellen Kontext), Visual Studio ignoriert dieDeploymentItem
vollständig Attribut und nicht einmal Versuchen Sie, um die Datei überall zu kopieren. In diesem Fall habe ich die Ausnahme "Datei nicht gefunden" erhalten, als ich versuchte, sie zum Lesen zu öffnen. Visual Studio erstellte ein temporäres Arbeitsverzeichnis für die Tests, aber es war nur eine Datei darin enthalten, AgentRestart.dat.
Wenn ich die Tests mit der Schaltfläche 'Unit-Tests ausführen' in meiner Symbolleiste ausgeführt habe (nicht sicher, welche Testoption das ist), hat Visual Studio die Datei nicht kopiert, sondern direkt aus dem Projektverzeichnis referenziert. Der Test wurde bestanden und es wurde kein temporäres Arbeitsverzeichnis erstellt.
Wenn ich den Test über die Menüoption "run -> Tests im aktuellen Kontext" (run, nicht debug) ausgeführt habe, wurde ein temporäres Arbeitsverzeichnis erstellt und die xml-Datei und alle ausführbaren Dateien dorthin kopiert. Der Test ist bestanden.
Als ich Local.testsettings (in einem Solution Items-Ordner unter meinem Testordner) bearbeitet habe, wählte ich im linken Menü "Deployment" und fügte die XML-Datei hinzu. Es wurde als [Lösungsverzeichnis] \ [Projektverzeichnis] \ file.xml hinzugefügt. Ich habe das Attribut DeploymentItem
entfernt. Jetzt konnte ich die Tests debuggen; Die XML-Datei und alle ausführbaren Dateien wurden in das für den Test erstellte temporäre Verzeichnis kopiert.
TLDR: Visual Studio ignoriert das Attribut DeploymentItem
für bestimmte Möglichkeiten, den Test auszuführen.Die Lösung besteht darin, Local.testsettings
, das Deployment
Menü zu bearbeiten und die Datei manuell hinzuzufügen.
Danke für die Hilfe! Ich gebe CPedros Kredit für seine Antwort, da es am hilfreichsten war, dies zu lösen.
Awesome Update, du bist ein absoluter Star !! Ich würde mehr upvote, wenn ich könnte ... – MalcomTucker
Run Unit Tests hat den Trick für mich. Gute Frage. Danke, –
@James B Facing all dies mit Visual Studio 2012 Express Edition, vor kurzem von .NET 2.0 auf .NET 4.5 aktualisiert. Ich wollte nur zeigen, dass SO wirklich eine nützliche langfristige Informationsquelle ist. Ihr Update hilft mir dabei, das Problem in den Griff zu bekommen. – DavidHyogo