Как играть со спичками Specs в Scala REPL? - PullRequest
0 голосов
/ 17 января 2010

При отладке или изучении спецификационных функций было бы более выгодно напечатать их в REPL (интерпретаторе Scala), а не в файле со спецификацией и запустить его с чем-то вроде maven. Каков оптимальный способ создать в REPL ту же «среду», что и в объекте спецификации?

Обновление: Похоже, что самый простой способ поэкспериментировать с сопоставлениями спецификаций в REPL - это определить некоторый вспомогательный подкласс и использовать выражения внутри его тела:

scala> class S extends Specification { override def toString = { reportSpecs; "" } }
defined class S

scala> new S { 1 mustEqual 2 }
Specification "anon"

  x example 1
    '1' is not equal to '2' (<console>:10)

Total for specification "anon":
Finished in 0 second, 4 ms
1 example, 1 expectation, 1 failure, 0 error

Ответы [ 2 ]

4 голосов
/ 17 января 2010

Вы можете запустить консоль Scala с scala -classpath и предоставить необходимые jar-файлы для спецификаций и других библиотек, которые вы используете внутри спецификаций (например, JUnit, Scalacheck). В качестве альтернативы, вы можете использовать функцию консоли из SBT, чтобы запустить консоль с правильным classpath.

Оказавшись в консоли, вы можете определить спецификацию и выполнить ее, как показано ниже.

Welcome to Scala version 2.8.0.Beta1-RC5 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_15).
Type in expressions to have them evaluated.
Type :help for more information.

scala> object Foo extends org.specs.Specification {
     |    "1 + 1" in { (1 + 1) must_== 2 }         
     | }                                           
defined module Foo

scala> Foo.reportSpecs
Specification "Foo"

  + 1 + 1

Total for specification "Foo":
Finished in 0 second, 184 ms
1 example, 1 expectation, 0 failure, 0 error

res0: Foo.type = Foo

Вы также можете попробовать запустить средство непрерывного тестирования в SBT, который автоматически перекомпилирует и запускает тесты после каждого сохранения файла .scala. С консоли SBT запустите > ~test

0 голосов
/ 17 января 2010

Я не знаю о спецификациях, но я сделал это с помощью ScalaCheck, и все, что ему действительно нужно, это иметь свой JAR в пути к классам.

...