2010-05-27 9 views
5

Ich habe einige Tests, die ich mit ReSharpers ausführen "Alle Tests von Lösung ausführen" -Funktion ausführen. Eine der getesteten Klassen hat eine Abhängigkeit von einer Datei im selben Ordner wie die Assembly, die sie enthält. Diese Datei wird über MSBuild in das Ausgabeverzeichnis kopiert (setzen Sie "Copy To Output Directory" auf "Copy always").Zugriff auf Projektdateien über NUnit-Tests

Problem: Die Tests werden nicht aus dem normalen Assembly-Ausgabeverzeichnis ausgeführt, sondern stattdessen von einem temporären Speicherort in meinem Benutzerprofil.

Daher weiß ich nicht wirklich, wo ich nach der Datei suchen soll - der Testläufer kopiert sie nicht dorthin. Kann ich es zwingen?

Antwort

4

Klingt so, als würden Sie Ihre Tests mit aktivierter Schattenkopie-Option ausführen.

Gehen Sie zu Resharper-> Optionen und wählen Sie die Registerkarte Unit Testing (ganz unten in der Liste). Deaktivieren Sie "Shadow-copy assemblies in test" und versuchen Sie es erneut.

+0

Stelle auf :) Vielen Dank! –

+0

Sehr nette Antwort, aber Shadow Copy ist eine ziemlich nette Funktion, die ich finde. Irgendein alternativer Weg, ohne die Datei manuell aus dem Fixture Setup zu kopieren? – Wernight

6

Die NUnit-Website empfiehlt in diesem Fall die Assembly.CodeBase-Eigenschaft zu verwenden, die zu dem von mir benötigten bin/debug führt.

"Hinweis: Wenn Sie versuchen, die Schattenkopie zu deaktivieren, um auf Dateien im selben Verzeichnis wie Ihre Assembly zuzugreifen, sollten Sie beachten, dass es Alternativen gibt. Verwenden Sie lieber die Assembly.Codebase-Eigenschaft als Assembly.Location. "

Die .Standort zurück Adresse Uri Stil "file: //// D: // Projekte ...", so der eigentliche Code war ich verwendet

string applicationDirectory = new Uri(Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase)).LocalPath; 
+0

Könnten Sie einen Link zu der Seite, auf der Sie das Zitat gefunden haben, veröffentlichen? – blachniet

+0

Es ist ihre Dokumentation. Die Seite für die aktuelle Version ist [http://www.nunit.org/index.php?p=settingsDialog&r=2.6.1](http://www.nunit.org/index.php?p=settingsDialog&r=2.6. 1). Seitenkapitel ist "Test Loader Settings - Advanced", Details zu "Shadow copy" – Roman

+0

Ich hatte das gleiche Ergebnis mit oder ohne Schattenkopie-Option, also musste ich für diese Lösung gehen und einen absoluten Pfad für alle meine Testdateien erstellen mit 'Path.Combine (applicationDirectory, fileName)'. – furier