Spock Framework

Was ist Spock?

Spock Specification

Fields

Fixture-Methods

Feature-Methods

Vier Phasen

Blocks

Helper-Methods

Code-Beispiel

import spock.lang.Unroll

class MathSpec extends spock.lang.Specification {

    def "Maximum von zwei nummerischen Werten etwas umständlicher"() {
        given:
        def a = 1
        def b = 5
        def c = 5

        when:
        def r = Math.max(a, b)

        then:
        r == c
    }

    def "Maximum von zwei nummerischen Werten"() {
        expect:
        Math.max(1, 5) == 5
        Math.max(2, 3) == 3
    }

    def "Arithmetic Exception is thrown when division by zero"() {
        when:
        1.0 / 0

        then:
        ArithmeticException e = thrown()
        e.message =~ "Division"
    }

    def "Maximum von zwei nummerischen Werten data-driven"() {
        expect:
        Math.max(value1, value2) == result

        where:
        value1 << [1, 2, 3]
        value2 << [5, 3, 7]
        result << [5, 3, 7]
    }

    @Unroll("Maximum von #value1 und #value2 ist #result")
    def "Maximum von zwei nummerischen Werten data-driven mit data-table"() {
        expect:
        Math.max(value1, value2) == result

        where:
        value1 | value2 | result
        1      | 5      | 5
        2      | 3      | 3
        7      | 3      | 7
    }

    def "Test mit komplexem assert"() {
        given:
        StringBuffer sbuf = new StringBuffer()

        when:
        sbuf.append("test")

        then:
        stringWurdeAngehaengt(sbuf)
    }

    def stringWurdeAngehaengt = { sbuf ->
        sbuf.length() == 4 &&
                sbuf.toString() == "test"
    }
}
Torsten Mandry

Torsten Mandry

Software Craftsman, Architekt, Clean Coder, API-Fetischist, Politik-Allergiker

rss facebook twitter github youtube mail spotify instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora