2009-06-23 6 views
3

Ich habe viele Komponententests, die viele txt, data, html etc. Dateien benötigen. Externes Speichern dieser Dateien erleichtert das Aktualisieren von Testfällen, indem neue Testfälle usw. hinzugefügt werden.Wie verwendet man externe Daten in Unit Tests?

Allerdings haben Abhängigkeiten in Unit Tests viele Kopfschmerzen in verschiedenen Systemen und Testläufern.

Was sind die besten Praktiken?

  1. Äußerlich sie zu speichern und Verknüpfung relativ diese Dateien in der Code? (verursachen Probleme in einigen Testläufer, oder erfordern zusätzliche Konfiguration)
  2. Einbettung all diese Dateien in dem Unit Test dlls und von dort gelesen (macht das Erstellen Tests härter)
  3. in einem fest codierten Speicher Lage (offensichtlich verursacht so viele Probleme, wenn Sie den Code überprüfen an einem anderen Ort)

Wie lösen Sie dieses Problem?

+0

Bitte nummerieren Sie die Optionen. Aufzählungszeichen sind verwirrend. Welche Probleme haben Sie bei Ihren Testläufern und welche "Extra" -Konfiguration sprechen Sie? Warum ist Option 1 so schlecht? Können Sie spezifische Probleme angeben? –

+0

Es funktioniert manchmal nicht mit nUnit, ich konnte die Version oder die Konfiguration nicht isolieren. Aber das Hauptproblem ist, wenn sich "Arbeitsverzeichnis" ändert, manchmal kann es die relativen Dateien nicht mehr finden. –

Antwort

3

Ich benutze einen lokalen Ordner in meinem Testprojekt und erhalten die Testdateien mit Code wie:

public static FileInfo GetTestFileInfo(string fileName) 
{ 
    var dir = AppDomain.CurrentDomain.BaseDirectory; 
    return new FileInfo(dir + @"\..\..\TestData\" + fileName); 
} 

Oh ja, ich bin mit MbUnit.

+0

AFAIK MBUnit unterstützt Arbeitsverzeichnisoptionen. Ich denke, nUnit macht etwas Unbeholfenes, obwohl ich gerade bemerkt habe, wenn ich es mit "TestData \ xxx.txt" belasse, funktioniert es. Zumindest für jetzt. Ich habe versucht, das aktuelle Verzeichnis zu bekommen. –

0

Meine Praxis war es, Testressourcen in Unit-Test-Baugruppen einzubetten und sie mit GetManifestResourceStream herausziehen.

Der NUnit-Test ist ohnehin auf die Vorrichtung ausgerichtet. Sobald Sie die Vorrichtung (, d. H., eine bestimmte Gruppe von Ressourcen) eingerichtet haben, können Sie weitere Tests hinzufügen.