[ https://jira.codehaus.org/browse/JBEHAVE-748?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=294997#comment-294997 ]
Arjan van Bentem commented on JBEHAVE-748: ------------------------------------------ Based on other unit tests from {{org.jbehave.core.steps.StepCandidateBehaviour}}, the following fails in 3.5.4: {code} @Test public void shouldNotCreateStepFromTableValuesViaAnnotations() throws Exception { AnnotationNamedParameterSteps steps = new AnnotationNamedParameterSteps(); // Parameter values from an Examples table should NOT be used in this test. // When removing the next line, or when using a different name for "ith", // then all is fine: namedParameters.put("ith", "first"); namedParameters.put("nth", "ground"); // Even with the above namedParameters as provided, then the following pattern // works fine if $ith is fully surrounded with whitespace, like: // String patternAsString = "I live on the $ith but some call it the $nth"; // ...but not when a comma follows the parameter name: String patternAsString = "I live on the $ith, but some call it the $nth"; Method method = stepMethodFor("methodWithNamedParametersInNaturalOrder", AnnotationNamedParameterSteps.class); StepCandidate candidate = candidateWith(patternAsString, WHEN, method, steps); candidate.createMatchedStep("When I live on the top, but some call it the penthouse", namedParameters) .perform(null); // Will fail in 3.5.4: // java.lang.AssertionError: Expected: "top" got: "first" assertThat(steps.ith, equalTo("top")); assertThat(steps.nth, equalTo("penthouse")); } {code} > When @Named parameter matches name in Example table, it might be injected for > steps that do not reference it > ------------------------------------------------------------------------------------------------------------ > > Key: JBEHAVE-748 > URL: https://jira.codehaus.org/browse/JBEHAVE-748 > Project: JBehave > Issue Type: Bug > Components: Core > Affects Versions: 3.5.4 > Environment: Windows 7, Java 6 > Reporter: Arjan van Bentem > > When a step with @Named parameters is used in a scenario that uses an Example > table for SOME of its steps, but for this specific step is given some > explicit value, then IF the parameter name is not fully surrounded with > whitespace AND it matches a name from the Examples table, then the given > value is ignored. Instead, the value from the Examples table is injected. > If the parameter name is unrelated to anything in the Examples table, then > all is fine, even when the parameter is not fully surrounded with whitespace. > (This is slightly related to http://jira.codehaus.org/browse/JBEHAVE-646) > For example, all fine: > {code} > @Given("I have <a> and <b>") > public void givenAAndB(@Named("a") String myA, @Named("b") String myB) { > assertThat(myA).isEqualTo("this"); > assertThat(myB).isEqualTo("that"); > } > @When("I do <a>") > public void whenIDoA(@Named("a") String myA) { > assertThat(myA).isEqualTo("this"); > } > @Then("I see <b>") > public void thenISeeB(@Named("b") String myB) { > assertThat(myB).isEqualTo("that"); > } > // $x not surrounded by all whitespace, but "x" NOT known in Examples table: > all fine > @When("I did '$x'") > public void whenIDidX(@Named("x") String myX) { > assertThat(myX).isEqualTo("foo"); > } > {code} > ...but wrong: > {code} > // $b not surrounded by all whitespace, and "b" also known in Examples table > @Then("I saw '$b'") > public void thenISawB(@Named("b") String myB) { > // Will fail: is assigned "that" from Examples table instead > assertThat(myB).isEqualTo("bar"); > } > {code} > ...when used with: > {code} > Given I have <a> and <b> > When I did 'foo' > And I do <a> > Then I see <b> > And I saw 'bar' > Examples: > | a| b| > |this|that| > {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://jira.codehaus.org/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email