2013-04-19 13 views
13

Wie unterscheiden sich Skalatest und Spock? Was ist der Mehrwert von jedem? Was ist agiler für die verhaltensorientierte Entwicklung (BDD)? Könnten Sie bitte einige Gedanken zu diesem Thema teilen?Ein Vergleich von ScalaTest und Spock

Ich möchte BDD starten, ich möchte eine zwischen den beiden auswählen, daher möchte ich eine fundierte Entscheidung treffen. Daher bekomme ich zuerst das Maximum an Informationen, vor allem, da ich ein Java-Programmierer bin und Scala eine Lernkurve zu haben scheint, die wichtig ist.

Jede Beratung oder Ideen oder Rückkehr von Erfahrungen wäre willkommen.

Vielen Dank

Antwort

23

Auf den Punkt gebracht, würde ich empfehlen ScalaTest zum Testen Scala-Code zu verwenden, und Spock zum Testen von Java oder Groovy-Code. (Natürlich ist es auch möglich, Java-Code mit ScalaTest zu testen.) Warum sollten Sie nicht beide Tools ausprobieren und mit denen arbeiten, mit denen Sie vertrauter sind?

Haftungsausschluss: Ich bin der Schöpfer von Spock.

+0

Vielen Dank für die Antwort, ich werde beide versuchen – MaatDeamon

+1

Peter ist sehr großzügig hier. Spocks Funktionen sind ohne Zweifel so großartig, dass sie für mich alle Test-Frameworks im Staub lassen. Nachdem das gesagt wurde, wäre es großartig, wenn @Peter kommentieren könnte, wenn Spock tatsächlich als Testframework für Scala funktioniert ... seit ich einen alten Post gelesen habe, in dem erwähnt wird, dass Spocks Feature compilerabhängig ist? – Beezer

3

Während ich Peters Antwort stimme, möchte ich meine Perspektive dazu geben.

Sowohl ScalaTest als auch Spock bieten einen fließenden BDD-Test. Ich finde jedoch, dass die beste Eigenschaft von Spock ist, dass Sie ein einzelnes Szenario mit mehreren Datensätzen und erwarteten Ergebnissen erstellen können. Dies ist sehr ähnlich wie Cucumbers Scenario Outline, nur auf Unit-Test-Ebene.

Ich kann andere Unit Test Framework/Bibliothek, die das tut nicht finden.

Zusammenfassend, wenn Sie mehrere Ein-/Ausgaben für einzelne Testszenarien testen müssen, verwenden Sie Spock, ansonsten können Sie frei wählen, was immer Sie möchten.

+0

https://github.com/junit-team/junit4/wiki/parameterized-tests für die gleiche Vollständigkeit, jUnit kann das gleiche tun, es ist nur hässlich –

+0

Ich glaube nicht, der parametrisierte Test wird nur erlauben maximales einzelnes Szenario pro Einheit Testklasse (auf Konstruktor parametrisiert). Im Feld parametrisiert, können Sie mehr bekommen, aber nur um hässlicher zu werden. – Wins

+0

stimme ich zu. Es ist nur so, dass jUnit theoretisch diese Funktion hat, während der Hässlichkeitsfaktor es praktisch macht, dass es dort nicht annähernd so zwingend ist. –