0

在调试或探索规范功能时,将它们键入 REPL(Scala 解释器)而不是使用规范的文件并使用 maven 之类的东西运行它会更有利。在 REPL 中创建与 Specification 对象相同的“环境”的最佳方法是什么?

更新: 看起来在 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

2 回答 2

4

您可以启动 Scala 控制台,scala -classpath并为您在规范中使用的规范和其他库(例如 JUnit、Scalacheck)提供必要的 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

于 2010-01-17T11:11:41.650 回答
0

I don't know about Specs, but I have done so with ScalaCheck, and all it really needs is having its JAR in the classpath.

于 2010-01-17T02:19:20.120 回答