Scala REPL でスペックマッチャーを使用するにはどうすればよいですか?
-
21-09-2019 - |
質問
仕様の機能をデバッグまたは調査するときは、仕様を含むファイルに入力して 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
解決
あなたはscala -classpath
とScalaのコンソールを起動し、スペック(例えばJUnitの、Scalacheck)の中から、使用スペックや他のライブラリのためのneccesary瓶を提供することができます。また、あなたは正しいクラスパスでコンソールを起動するために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
また、自動的に再コンパイルし、.scalaファイルを保存するたびに後にテストを実行しますSBTでの連続テストランナーを、試してみたいことがあります。 SBTコンソールから、実行> ~test
他のヒント
私は、仕様については知らないが、私はScalaCheckとして行っている、それが本当に必要とするすべてのクラスパスにそのJARを持っている。
所属していません StackOverflow