web-dev-qa-db-ja.com

IntelliJでCucumberテストを実行するIncompatibleClassChangeError

IntelliJでキュウリのテスト機能を実行すると、表示されるのはスタックトレース付きのIncompatibleClassChangeErrorだけです。

_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.
_

これはIntelliJ IDEA 2018.1.4 (Ultimate Edition), Build #IU-181.5087.20で、_Cucumber for Java version 181.5087.20_です

13
beetstra

これは最新バージョンで解決されています。

構成を再作成することができるため(自動的に更新されます)、またはプログラムの引数を次のように置き換えることができます。

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

古いバージョンのプラグインは、cucumber Javaバージョン3以降。

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

issue#1392 で説明されているように

これは、IDEAのCucumberJvm2SMFormatterが原因です。 Cucumber2のフォーマッタであるため、Cucumber 3で重大な変更が発生します。

最も簡単な回避策は、実行構成のプログラム引数から--plugin org.jetbrains.plugins.cucumber.Java.run.CucumberJvm2SMFormatterを削除することです。

8
guleryuz