Arity mismatch. Declared parameters: [class java.lang.Object]. Matched arguments: [] #297

Closed
el-pablo opened this Issue Apr 11, 2012 · 1 comment

Projects

None yet

2 participants

@el-pablo

I am getting the following stack trace, for a step like the following:

@357
Scenario: Carbon Coder executes unsuccessfully
  Given Carbon Coder is running correctly

And the step definition :

Given(~"Carbon Coder is running correctly\$") {
    transcodeHelper.prepareService()
}
cucumber.runtime.CucumberException: Arity mismatch. Declared parameters: [class java.lang.Object]. Matched arguments: []
    at cucumber.runtime.StepDefinitionMatch.transformedArgs(StepDefinitionMatch.java:69)
    at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:43)
    at cucumber.runtime.Runtime.runStep(Runtime.java:223)
    at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44)
    at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39)
    at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:36)
    at cucumber.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:76)
    at cucumber.junit.FeatureRunner.runChild(FeatureRunner.java:65)
    at cucumber.junit.FeatureRunner.runChild(FeatureRunner.java:20)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
    at cucumber.junit.FeatureRunner.run(FeatureRunner.java:72)
    at cucumber.junit.Cucumber.runChild(Cucumber.java:75)
    at cucumber.junit.Cucumber.runChild(Cucumber.java:36)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
    at cucumber.junit.Cucumber.run(Cucumber.java:80)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:76)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:182)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:62)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

It works if I add a regex to the step definition. e.g.

Given(~"Carbon Coder (*.) running correctly\$") { String ignore ->
    transcodeHelper.prepareService()
}
@aslakhellesoy
Cucumber member

You have to explicitly declare an empty list of closure parameters. So instead of this:

Given(~"Carbon Coder is running correctly\$") {
    transcodeHelper.prepareService()
}

Do this:

Given(~"Carbon Coder is running correctly\$") { ->
    transcodeHelper.prepareService()
}

Unfortunately it seems impossible to detect when a list of parameters is not supplied, so I can't give a better error message. You just have to know about this I guess.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment