[JAVA] Erreur "Où les blocs ne peuvent contenir que des paramétrisations" dans Spock

Erreur dans Spock

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

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.

Raison

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.

Recommended Posts

Erreur "Où les blocs ne peuvent contenir que des paramétrisations" dans Spock
ERREUR: Dans le fichier ./.env: le nom de la variable d'environnement "THOR_SILENCE_DEPRECATION" ne peut pas contenir d'espace.