Frage

Bei Debuggen oder Erforschen von Spezifikationsfunktionen wäre es vorteilhafter, sie in Repl (Scala Interpreter) zu tippen, dann eher in der Datei mit Spec und mit so etwas wie Maven ausführen. Was ist der optimale Weg, um in der replalen "Umgebung" wie im Spezifikationsobjekt zu erstellen?

Aktualisieren:Es sieht so aus, als ob der einfachste Weg, mit Spezifikationen in Repl zu experimentieren, darin besteht, einige Helfer -Unterklassen zu definieren und Ausdrücke in seinem Körper zu verwenden:

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
War es hilfreich?

Lösung

Sie können die Scala -Konsole mit starten scala -classpath und geben Sie die Neccesary -Gläser für Spezifikationen und andere Bibliotheken an, die Sie aus den Spezifikationen verwenden (z. B. Junit, Scalacheck). Alternativ können Sie die Konsolenfunktion von SBT verwenden, um die Konsole mit dem richtigen Klassenpfad zu starten.

Einmal in der Konsole können Sie eine Spezifikation definieren und sie wie unten ausführen.

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

Möglicherweise möchten Sie auch den kontinuierlichen Testläufer in SBT ausprobieren, der nach jedem Speichern einer .scala -Datei automatisch Tests neu kompiliert und ausführt. Aus der SBT -Konsole laufen > ~test

Andere Tipps

Ich weiß nichts über Spezifikationen, aber ich habe das mit Scalacheck getan, und alles, was es wirklich braucht, ist, sein Glas im Klassenpfad zu haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top