web-dev-qa-db-fra.com

IncompatibleClassChangeError exécutant des tests Cucumber dans IntelliJ

Lorsque j'exécute une fonctionnalité de test de concombre dans IntelliJ, tout ce qu'il montre est une IncompatibleClassChangeError avec trace de pile:

Testing started at 12:55 ...
/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/bin/Java ...
Exception in thread "main" Java.lang.IncompatibleClassChangeError: Found interface cucumber.api.TestCase, but class was expected
    at org.jetbrains.plugins.cucumber.Java.run.CucumberJvm2SMFormatter.handleTestCaseStarted(CucumberJvm2SMFormatter.Java:80)
    at org.jetbrains.plugins.cucumber.Java.run.CucumberJvm2SMFormatter.access$000(CucumberJvm2SMFormatter.Java:17)
    at org.jetbrains.plugins.cucumber.Java.run.CucumberJvm2SMFormatter$1.receive(CucumberJvm2SMFormatter.Java:32)
    at org.jetbrains.plugins.cucumber.Java.run.CucumberJvm2SMFormatter$1.receive(CucumberJvm2SMFormatter.Java:30)
    at cucumber.runner.EventBus.send(EventBus.Java:28)
    at cucumber.runner.TestCase.run(TestCase.Java:37)
    at cucumber.runner.Runner.runPickle(Runner.Java:44)
    at cucumber.runtime.Runtime.runFeature(Runtime.Java:120)
    at cucumber.runtime.Runtime.run(Runtime.Java:106)
    at cucumber.api.cli.Main.run(Main.Java:35)
    at cucumber.api.cli.Main.main(Main.Java:18)

Process finished with exit code 1
Empty test suite.

C'est IntelliJ IDEA 2018.1.4 (Ultimate Edition), Build #IU-181.5087.20, avec Cucumber for Java version 181.5087.20

13
beetstra

Cela est résolu dans la dernière version.

Vous pouvez recréer la configuration (afin qu'elle soit mise à jour automatiquement), ou vous pouvez remplacer les arguments du programme par

--plugin org.jetbrains.plugins.cucumber.Java.run.CucumberJvm3SMFormatter

Une ancienne version du plugin n'était pas compatible avec cucumber Java version 3 et supérieure. Si vous êtes bloqué avec celle-ci, vous pouvez mettre à jour votre build.gradle pour spécifier explicitement la version 2:

dependencies {
    ...
    testCompile 'io.cucumber:cucumber-Java8:2.+'
}
8
beetstra

Comme expliqué dans problème # 1392

Cela est dû au CucumberJvm2SMFormatter d'IDEA. Étant le formateur de Cucumber2, il se produit un changement de rupture dans Cucumber 3.

La solution de contournement la plus simple consiste à supprimer --plugin org.jetbrains.plugins.cucumber.Java.run.CucumberJvm2SMFormatter à partir des arguments du programme dans la configuration d'exécution.

8
guleryuz