Relativer Pfad auf unit-test-Projekt mit c#
Habe ich eine Lösung, die eine Konsole-Anwendung und unit-test.
var target = new Validator();
var targetFile = @"C:\Folder\SubFolder\AnotherSubFolder\Development\DEV\src\UnitTest\TargetFolder\file.xml";
bool actual = target.Validate(targetFile);
Assert.AreEqual(true, actual);
Der Validator befindet sich an der Konsole-Anwendung-Projekt, während meine file.xml befindet sich in den Ordner, in dem unit-test-Projekt.
Dieser unit-test ist vorbei, aber ich möchte sicherstellen, dass, wenn ich diese in meinem tfs-oder build-server, kann es immer noch finden Sie mein targetFile.
Wie bin ich gonna ändern Sie den Pfad der targetFile?
Vielen Dank im Voraus!
- Was unit-Test-framework verwenden Sie?
- Rahmen? Es ist 4.0
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Verstand ich Ihr Problem richtig, es ist nicht gut, dass Produkt-code(in der Konsole-Anwendung) richtet sich auf ein Element in den test-Projekt, so empfehle ich Ihnen, sich zu bewegen
file.xml
um die Produkt-code-Projekt.Zur Lösung Ihrer path-problem, ich denke, der beste Ansatz ist die Verwendung der Copy to Output Directory Eigenschaft als immer Kopieren oder Kopieren, wenn neuer, die Sie hier finden können in den VS-Eigenschaften-Fenster.
Schauen Sie sich die folgenden Schritte.
file.xml
im Produkt-Projekt(zB. Daten-Ordner).file.xml
im Ordner.file.xml
.Bauen und zu tun unit-Tests als
In diesem Fall, VS automatisch den Ordner "data" mit
file.xml
Sie unter Ausgabe-Ordner des test-poject.Können Sie auf die Ordner, wie unten.
Fand ich die Lösung zu meinem problem. Ich habe diese:
Der einfachste Weg ist, MS Unit-Test ist die Verwendung einer
[DeploymentItem]
im test der unit-test-Klasse. Sehen http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.deploymentitemattribute(v=vs. 100).aspx für mehr details. Auch Wie kann ich eine Daten-Datei in eine VS 2008 unit-test?Die Lage des
Validator
sollte nicht relevant sein. Relative Pfad sollte relativ zum Verzeichnis Ihrer test-Anwendung ausgeführt wird, so setzen Sie einfachtargetFile
zu werden, einen relativen Pfad von dort aus.Dann stellen Sie sicher, dass Sie Ihre tests aus dem gleichen relativen Speicherort auf der bulid-server auf dem dev-Maschine.
Bonus-Tipp: verwenden Sie
Assert.IsTrue(actual);