JBehave неоднозначный шаг

скажем, у меня есть:

@Given("first name is $firstName")
@Given("first name is $firstName and last name is $lastName")

следующий шаг будет отмечен как двусмысленно:

Given first name is John and last name is Smith

без использования кавычек для окружения первого параметра, как я могу исправить этот шаг, чтобы он соответствовал только второму? Использование кавычек для окружения обоих параметров отдельно также имеет ту же проблему неоднозначности.

существует ли ограничение на длину каждого параметра? Есть ли определенные символы,которые нельзя передать?

3 ответов


вы можете решить это, используя приоритеты шага, как описано здесь:http://jbehave.org/reference/stable/prioritising-steps.html

ваша проблема будет решена путем установки более высокого приоритета в варианте с двумя параметрами:

@Given("first name is $firstName")
@Given(value = "first name is $firstName and last name is $lastName", priority = 1)

я попробовал ваш пример, и с этой комбинацией два шага были разделены.

(Edit: мое начальное решение имело кавычки для параметров, но оно работает и без них)


Я думаю, этот сценарий можно написать так:

Given first name is John
And last name is Smith

и шагов:

@Given("first name is $firstName")
@And("last name is $lastName")

вы можете создать объект person сначала установить имя и фамилию в шагах "@Given".
Если вам нужно добавить другое свойство, например email, вам просто нужно создать еще один шаг:

@And("the email is $email")
public addEmail(String email) {
    person.setEmail(email);
}

Так что эта проблема не повторится и Вы код будет более многоразовые.


что сработало для меня, так это замена скобок на лодыжке ( ) на знак доллара ( $ ), т. е.

@Given("a person with first name <firstName>")

и

@Given("a person with first name <firstName> and last name <lastName>")