Scala: Definindo casos de teste com base na pasta
Pergunta
Eu tenho que testar um programa que leva um arquivo de entrada. Coloquei todos os arquivos de entrada dentro de uma pasta e agora quero usar o SBT e o Scalatest para ter os seguintes recursos:
- Testall: Invoque o programa com um arquivo de entrada de cada vez para todos os arquivos
- Teste um: Invoque o programa com um arquivo de entrada fornecido como argumento para
test
Comando do SBT Console
Por enquanto, o nome de pastagem é um caminho fixo, portanto, a lista de todos os arquivos pode ser obtida por:
val dir = new File("tests\\");
val files = dir.listFiles.filter(
f => """.*\.extension$""".r.findFirstIn(f.getName).isDefined);
Alguém pode me dar uma breve idéia sobre qual classe mais escalatente é mais adequada para esse fim?
Solução
Eu acho que você deve considerar refatorar o programa para que você tenha um método que leve um InputStream
em vez de um arquivo. Dessa forma, você pode testar o método sem se preocupar com arquivos. É claro que depende da estrutura e tamanho dos arquivos.
Se você não quiser fazer isso, pode implementar sua própria tarefa SBT com um parâmetro (o nome do arquivo).
http://code.google.com/p/simple-build-tool/wiki/customactions