2009-11-21 18 views
50

Ich verwende derzeit die standardmäßige Microsoft Unit Testsuite in VS 2008. ReSharper 4.5 ist ebenfalls installiert. Meine Komponententests basieren auf einer TestInitialize-Methode, die eine Datendatei vorlädt. Der Pfad zu dieser Testdatendatei ist abhängig davon, ob ich den Komponententest innerhalb von VS 2008 mit dem Standardbefehl Strg-R + Strg-T im Vergleich zum Befehl zur Ausführung des Resharper-Einheitentests ausführt.Pfad zum Testen von Datendateien für Komponententests

Wie kann meine TestInitialize-Methode den korrekten Pfad zu den Komponententestdateien kennen?

Update:

Die Testdaten sind beträchtlich genug, dass ich will es nicht in einen String drücken, so bevorzugen sie als externe Datei zu halten. Die Dateistruktur meines Testprojekts ist die des Standard-Unit-Test-Projekts, das mit einer MVC-Anwendung erstellt wurde. Unter dem Stamm des Testprojekts wurde ein neuer Ordner namens "Test Data" erstellt. Es ist dieser Ordner, auf den ich zugreifen möchte, unabhängig vom Test-Runner.

Antwort

1

Konnten Sie die Testdaten in Ihrer Testsuite-Initialisierungsroutine nicht von Grund auf neu erstellen? Dies würde nicht darauf beruhen, dass es sich an einer bestimmten Stelle befindet und vor versehentlicher Manipulation sicher wäre.

+1

Ich habe eine Bibliothek, die viel Mathematik tut. Ich möchte sicherstellen, dass ich die erwarteten Ergebnisse für eine Vielzahl von Eingaben bekomme. Jeder Test beinhaltet 2 Eingabekoordinaten und ein Ergebnis, was mich mit 9 Ziffern pro Test verlässt. Ich hätte lieber eine Datei mit meinen Eingaben als ein Haufen Kopieren/Einfügen. –

76

Sie sagen, die Position der Testdatei hängt vom Test Runner ab, daher nehme ich an, dass sie im Projekt enthalten ist und zusammen mit den DLLs kopiert wird.

string path = AppDomain.CurrentDomain.BaseDirectory; 

Dadurch erhalten Sie den Ordner, in dem Sie den Test ausführen.

[Bearbeiten]

In Visual Studio.

ReSharper -> Optionen -> Extras -> Unit Testing -> Ausführen Ergebnisse von: angegebenem Ordner (oder die Projektausgabe ändern Ordner Ihres Testprojektes)

Wo Sie den Ordner Ihrer Testdaten angeben, oder relativ zum angegebenen Ordner.

+1

Vielen Dank. Ich habe mit der ExecutingAssembly herumgespuckt und einen seltsamen Pfad bekommen, der tief in mein Windows-Profil hineinzeigte. Die Testdaten waren nirgends in Sicht ... – Tormod

+0

Beachten Sie, dass Sie damit den Pfad zum Ordner \ bin \ Debug oder \ bin \ Release im Testprojekt erhalten, wie zB "C: \ Yadda \ MyProject \ bin \ Debug" –

15

(ursprüngliche Antwort aktualisiert, um auch .net Kern Multi-Target-Projekt Ausgabepfade zu akzeptieren)

Es nimmt an Ihren Testdaten-Dateien sind in einem Ordner, den Sie übergeben als Parameter „testDataFolder“ innerhalb eines root „test_data“ Ordner:

public static string GetTestDataFolder(string testDataFolder) 
{ 
    string startupPath = ApplicationEnvironment.ApplicationBasePath; 
    var pathItems = startupPath.Split(Path.DirectorySeparatorChar); 
    var pos = pathItems.Reverse().ToList().FindIndex(x => string.Equals("bin", x)); 
    string projectPath = String.Join(Path.DirectorySeparatorChar.ToString(), pathItems.Take(pathItems.Length - pos - 1)); 
    return Path.Combine(projectPath, "Test_Data", testDataFolder); 
} 
+0

genau das, wonach ich suche! – TyForHelpDude

Verwandte Themen