2017-01-23 16 views
0
Given i have a cucumber feature 
When I run the feature from my java class with annotations to a certain package 
Then cucumber knows to go and find the right class 

Но как это делается?Как огурец знает, какой файл java запускать?

Если я дублирую класс, то он, кажется, запускает его дважды (и взорвался, я действительно не исследовал). Он просто выглядит в пакете для любого метода, который соответствует аннотации/java8-именованию? Или происходит что-то еще?

Мне любопытно, потому что, если у вас есть два заданных для разных сценариев, но классы находятся в одном пакете - это проблема? Есть ли решение?

ответ

1

Отображение между Java и Gherkin выполняется наоборот. То есть регулярные выражения, которые Java-методы аннотируются, используются для поиска соответствующих шагов.

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

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