[JVM] error executing cucumber with cucumber-java8 lambda

145 views
Skip to first unread message

cle...@sweep.io

unread,
Jun 8, 2016, 4:55:23 AM6/8/16
to Cukes
Dear Cucumber team,

I experienced an error running cucumber-java8 in Eclipse (Mars) as maven dependency, and read about similar problems from users in the last times. I updated to the last Java version 1.8_92 as one user mentioned the bug is between 1.8_50 and < 1.8_90 but that did not solved it. Do you have any additional ideas or is this bug still unsolved?

Many thanks for your help and ideas!!

Executed code:
Filename: src/test/resources/at/solaris/Solaris.feature

Feature: Cucumber with Java8                                                    
        As a developer                                                          
        I want to use Cucumber-java8                                            
        So that I have nicer step definitions                                   

        Scenario: Let's try it                                                  
                Given I have some dummy code                                    
                When I try to test it                                           
                Then it should work with cucumber-java8

Generated code:
Filename: src/test/java/at/solaris/Solaris.java

import cucumber.api.java8.En;

public class Solaris implements En {

    public Solaris() {
        Given("^I have some dummy code$", () -> {
            // Write code here that turns the phrase above into concrete actions
        });

        When("^I try to test it$", () -> {
            // Write code here that turns the phrase above into concrete actions
        });

        Then("^it should work with cucumber-java(\\d+)$", (Integer arg1) -> {
            // Write code here that turns the phrase above into concrete actions
        });
    }
}

Console output:
Feature: Cucumber with Java8
        As a developer                                                          
        I want to use Cucumber-java8                                            
        So that I have nicer step definitions

0 Scenarios
0 Steps
0m0.000s

-> Error in junit:

cucumber.runtime.CucumberException: Failed to instantiate class at.solaris.Solaris
    at cucumber.runtime.java.DefaultJavaObjectFactory.cacheNewInstance(DefaultJavaObjectFactory.java:46)
    at cucumber.runtime.java.DefaultJavaObjectFactory.getInstance(DefaultJavaObjectFactory.java:32)
    at cucumber.runtime.java.JavaBackend.buildWorld(JavaBackend.java:131)
    at cucumber.runtime.Runtime.buildBackendWorlds(Runtime.java:140)
    at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:38)
    at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:91)
    at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)
    at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70)
    at cucumber.api.junit.Cucumber.runChild(Cucumber.java:93)
    at cucumber.api.junit.Cucumber.runChild(Cucumber.java:37)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at cucumber.api.junit.Cucumber.run(Cucumber.java:98)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at cucumber.runtime.java.DefaultJavaObjectFactory.cacheNewInstance(DefaultJavaObjectFactory.java:40)
    ... 29 more
Caused by: cucumber.runtime.CucumberException: java.lang.IllegalArgumentException: Wrong type at constant pool index
    at cucumber.runtime.java.JavaBackend.addStepDefinition(JavaBackend.java:164)
    at cucumber.api.java8.En.Given(En.java:190)
    at at.solaris.Solaris.<init>(Solaris.java:14)
    ... 34 more
Caused by: java.lang.IllegalArgumentException: Wrong type at constant pool index
    at sun.reflect.ConstantPool.getMemberRefInfoAt0(Native Method)
    at sun.reflect.ConstantPool.getMemberRefInfoAt(ConstantPool.java:47)
    at cucumber.runtime.java8.ConstantPoolTypeIntrospector.getTypeString(ConstantPoolTypeIntrospector.java:37)
    at cucumber.runtime.java8.ConstantPoolTypeIntrospector.getGenericTypes(ConstantPoolTypeIntrospector.java:27)
    at cucumber.runtime.java.Java8StepDefinition.<init>(Java8StepDefinition.java:45)
    at cucumber.runtime.java.JavaBackend.addStepDefinition(JavaBackend.java:162)
    ... 36 more
Reply all
Reply to author
Forward
0 new messages