2010-08-10 12 views
5

Ich muss ein Programm testen, das eine Eingabedatei nimmt. Ich habe alle Eingabedateien in einem Ordner abgelegt und jetzt will ich SBT und ScalaTest verwenden folgende Funktionen haben:Scala: Definieren von Testfällen basierend auf Ordner

  • testall: Rufen Sie das Programm mit einer Eingabedatei zu einem Zeitpunkt für alle Dateien
  • -Test ein : das Programm mit einer Eingabedatei als Argument test Befehl von sbt Konsole Invoke
  • bereitgestellt

Für den Augenblick folder einen festen Pfad, so Liste aller Dateien erhalten werden kann:

val dir = new File("tests\\"); 
val files = dir.listFiles.filter(
    f => """.*\.extension$""".r.findFirstIn(f.getName).isDefined); 

Kann mir jemand eine kurze Vorstellung davon geben, welche skalierbare Klasse für diesen Zweck am besten geeignet ist?

Antwort

2

Ich denke, Sie sollten Refactoring das Programm, so dass Sie eine Methode haben, die eine InputStream anstelle einer Datei nimmt. Auf diese Weise können Sie die Methode testen, ohne sich um Dateien kümmern zu müssen. Das hängt natürlich von der Struktur und Größe der Dateien ab.

Wenn Sie das nicht möchten, können Sie Ihren eigenen SBT-Task mit einem Parameter (dem Dateinamen) implementieren.

http://code.google.com/p/simple-build-tool/wiki/CustomActions

http://code.google.com/p/simple-build-tool/wiki/MethodTasks

+0

Dank, kann ich ändern die Quelle nicht Input zu akzeptieren, aber ich kann die Änderungen im Codebeispiel aufgeführt machen. Danke für die Antwort. – thequark