Spock


#1

Auf meiner Mission tolle Frameworks / Sprachen an den Mann zu bringen (Frau natuerlich auch).

Hier die naechste Lektion :

SPOCK - Spock is a testing and specification framework

ok warum ein weiteres testing framework wenn man schon das allvorhandene JUnit hat.

Einfach - es geht groovier … und vor allem intuitiver

mich hat schon immer JUnit gestoert… man gibt komische namen an (frueher immer mit test beginnend)… darin steht dann irgendein code und dann irgendwelche asserts.

Ein einfaches “was macht der test eigentlich”, “was genau ist die Annahme”, “was genau ist die Erwartung” etc war verdammt schwierig.

Irgendwann kam dann das behavior driven testing… war schonmal netter.

nun wurde das alles groovier… SPOCK

@RunWith(Sputnik)
class EmptyStack {
  def stack = new Stack()

  def "size"() {
    expect: stack.size() == 0
  }

  def "pop"() {
    when: stack.pop()
    then: thrown(EmptyStackException)
  }

  def "peek"() {
    when: stack.peek()
    then: thrown(EmptyStackException)
  }

  def "push"() {
    when:
    stack.push("elem")

    then:
    stack.size() == 1
    stack.peek() == "elem"
  }
}

fuer nicht Groovianer vll auch schwerer zu lesen, aber endlich kann man sprachliche Semantik ala “when” “then” etc einbringen.

der output ist einfach nur verstaendlich


    max(a, b) == c
    |   |  |  |  |
    3   1  3  |  2
              false

Tipp fuer jeden mal anzuschauen…