2010-01-16 20 views
0

在調試或瀏覽規範功能時,在REPL(Scala解釋器)中輸入它們,而不是在spec中的文件中輸入它們會更有優勢,並且可以使用類似maven的方式運行它。在REPL中創建與規範對象相同的「環境」的最佳方式是什麼?如何玩在Scala 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 

回答

4

您可以使用scala -classpath啓動Scala控制檯,併爲您在規範中使用的specs和其他庫(例如JUnit,Scalacheck)提供neccesary jar。或者,您可以使用SBT的控制檯功能以正確的類路徑啓動控制檯。

一旦進入控制檯,您可以定義一個規格並執行它,如下所示。

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

sbt非常棒,因爲您使用Specs依賴項進行設置,然後運行'console'命令,以及'〜test'命令。 (有時擺弄只是你需要的。) – 2010-01-17 11:17:59

+0

作爲一個側面提示:你也可以在Scala REPL運行時將JAR文件加載到Classpath中:「:jar /path/to/jarfile.jar」 – Malax 2010-01-17 11:18:59

0

我不知道規格,但我已經使用ScalaCheck來完成這項工作,並且它真正需要的是在類路徑中使用它的JAR。