Exécutez le test dans Spock.
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
}
}
Au fait, le paramétrage de build.gradle
est le suivant.
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'
}
Ensuite, j'ai eu l'erreur suivante:
where-blocks may only contain parameterizations (e.g. 'salary << [1000, 5000, 9000]; salaryk = salary / 1000')
Il semble y avoir plusieurs raisons à cette erreur. Je pense que c'est un modèle rare, mais dans mon cas, c'était parce que la version Spock était ancienne.
Les [Notes de version] de Spock (http://spockframework.org/spock/docs/1.2/release_notes.html#_0_6_released_2012_05_02) indiquent:
0.6 (released 2012-05-02)
(Omis)
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
Dans Spock, la valeur attendue du test de paramétrage||
Ce qui est écrit après est le 0 de Spock.Puisqu'il s'agit d'une fonction ajoutée en 6, il semble qu'elle ne puisse pas être utilisée selon la version. (Actuellement (mai 2020) la dernière version est 1.3)
La solution est simplement||
À|
Vous pouvez l'exécuter en définissant.
Alternativement, augmenter la version de Spock devrait résoudre le problème.
Comme c'est une fonction qui est utilisée naturellement, je n'avais pas l'idée qu'elle pourrait ne pas être disponible selon la version, et j'ai personnellement eu du mal car je ne pouvais pas comprendre immédiatement la cause du message d'erreur.
Soyez prudent lorsque vous utilisez une très ancienne version de Spock.