2013-12-16 5 views
2

Я хочу написать шаг jBehave следующим образом;Напишите пример примера jBehave

@When("I perform <someAction> on $panel") 

Так что я могу иметь шаги, как

i. When I perform Action1 on Panel1 
ii. When I perform Action2 on Panel2 

Теперь, как вы можете видеть, этот шаг имеет сочетание заполнителем

1. someAction which actually comes via meta 
2. $panel which is taken from the step text in the story 

Но это не работает со мной, и я получаю NullPointerException

Это работает, если я пишу

@When("I perform <someAction> on Panel1") 

Т.е. я не могу использовать 2 заполнителя на одном и том же шаге.

Но поскольку это общий шаг, я не хочу жестко кодировать любые значения.

ответ

0

Да, вы можете

@When("I perform <someAction> on *panel*") 
public void perform(@Named("panel") String panelId){ 

} 

и теперь, я рекомендую, чтобы идентифицировать все элементы по имени, используя Джемми вы можете использовать new NameComponentChooser(panelId)

+0

На самом деле мне нужно 2 параметра для метода; panelId и someAction – testndtv

+0

нет ограничений по параметрам @Named, проверьте http://jbehave.org/reference/stable/parameter-injection.html – RamonBoza

0

Пожалуйста, используйте символ $ перед обеими вашими параметрами. Затем обрабатываются как примерный параметр, так и нормальный параметр.

@When("I perform $action on $panel") 
public void performAction(String action, String panel){ 
} 
Смежные вопросы