2010-08-10 21 views
5

Je dois tester un programme qui prend un fichier d'entrée. J'ai mis tous les fichiers d'entrée dans un dossier et maintenant je veux utiliser SBT et ScalaTest avoir des caractéristiques suivantes:Scala: Définition des cas de test basés sur le dossier

  • testall: Invoquer le programme avec un fichier d'entrée à la fois pour tous les fichiers
  • Testez un : Invoquer le programme avec un fichier d'entrée fourni comme argument pour test commande de la console de SBT

pour l'instant foldername est un chemin fixe, de sorte que la liste de tous les fichiers peuvent être obtenus par:

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

Quelqu'un peut-il me donner une idée de la classe la plus graduelle la mieux adaptée à cet objectif?

Répondre

2

Je pense que vous devriez envisager de refactoriser le programme afin que vous ayez une méthode qui prend un InputStream plutôt qu'un fichier. De cette façon, vous pouvez tester la méthode sans vous soucier des fichiers. Bien sûr, cela dépend de la structure et de la taille des fichiers.

Si vous ne voulez pas faire cela, vous pouvez implémenter votre propre tâche SBT avec un paramètre (le nom de fichier).

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

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

+0

merci, je ne peux pas modifier la source d'accepter InputStream Je peux cependant faire les modifications indiquées dans l'exemple de code. Merci de répondre. – thequark