Я использую Specs2, чтобы написать спецификацию для библиотеки измерений. Для проверки рассчитанных показателей у меня есть множество исходных файлов, охватывающих как стандартные случаи, так и множество угловых случаев. Я проанализировал их вручную, чтобы знать точные измерения, но чтобы документировать все и автоматизировать это, это должно быть частью спецификации Specs2.
Пока что я скопировал некоторые исходные файлы в свою спецификацию и передал их проверяющим методам в виде строки. Однако в этом есть и недостаток: встроенный код больше не проверяется - внешние файлы проверяются стандартным компилятором, поэтому я уверен, что это правильный код. Нет проблем просто передать имя файла, но моя спецификация должна включать исходный код в итоговый отчет HTML, а не только указывать на файл, который нужно выкопать и посмотреть вручную. Чтобы дать вам некоторое представление, вот код, который я сейчас использую
class CountVisitorSpec extends Specification { def is =
"Given the ${com/example/Test1.java} source, the visitor should deliver a count of ${16}" ! new GivenThen {
def extract(text: String) = {
val (filename, count) = extract2(text)
val file = classOf[CountVisitorSpec].getClassLoader.getResource(filename).getFile
val src = Path(file).slurpString
val visitor = new CountVisitor
AstAnalyzer.runWith(src, visitor)
visitor.count must_== count.toLong
}
}
}
Есть ли у кого-то идея, как можно указать внешние файлы, чтобы они были включены в качестве исходного ввода в итоговый отчет HTML?