Führen Sie den Test in Spock aus.
import spock.lang.*
class DataDrivenSpec extends Specification {
def "a + b == sum"() {
expect:
a + b == sum
where:
a | b || sum
1 | 2 || 3
3 | 1 || 4
}
}
Die Einstellung von "build.gradle" ist übrigens wie folgt.
build.gradle
plugins {
id 'groovy'
}
group 'old-spock-sample'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
// https://mvnrepository.com/artifact/org.codehaus.groovy/groovy-all
compile group: 'org.codehaus.groovy', name: 'groovy-all', version: '1.7.5'
// https://mvnrepository.com/artifact/org.spockframework/spock-core
testCompile group: 'org.spockframework', name: 'spock-core', version: '0.5-groovy-1.7'
}
Dann habe ich folgenden Fehler bekommen:
where-blocks may only contain parameterizations (e.g. 'salary << [1000, 5000, 9000]; salaryk = salary / 1000')
Es scheint mehrere Gründe für diesen Fehler zu geben. Ich denke, es ist ein seltenes Muster, aber in meinem Fall lag es daran, dass die Spock-Version alt war.
In den [Versionshinweisen] von Spock (http://spockframework.org/spock/docs/1.2/release_notes.html#_0_6_released_2012_05_02) heißt es:
0.6 (released 2012-05-02)
(Weggelassen)
Improved Data Table Syntax
Table cells can now be separated with double pipes. This can be used to visually set apart expected outputs from provided inputs:
... where: a | b || sum 1 | 2 || 3 3 | 1 || 4
In Spock der erwartete Wert des Parametrisierungstests||
Was danach geschrieben wird, ist Spock 0.Da es sich um eine in 6 hinzugefügte Funktion handelt, scheint sie je nach Version nicht verwendet werden zu können. (Derzeit (Mai 2020) ist die neueste Version 1.3)
Die Lösung ist einfach||
Zu|
Sie können es ausführen, indem Sie einstellen.
Alternativ sollte das Problem durch Erhöhen der Spock-Version gelöst werden.
Da es sich um eine Funktion handelt, die selbstverständlich verwendet wird, hatte ich nicht die Idee, dass sie je nach Version möglicherweise nicht verfügbar ist, und ich hatte persönlich Probleme, weil ich die Ursache anhand der Fehlermeldung nicht sofort verstehen konnte.
Seien Sie vorsichtig, wenn Sie eine sehr alte Version von Spock verwenden.