TL; DR;
Как определить новый DSL поверх огурца? Так же, как каратэ:
https://github.com/intuit/karate
https://semaphoreci.com/community/tutorials/testing-a-java-spring-boot-rest-api-with-karate
Таким образом, они строят свои собственные DSL на вершине огурец. Так, как мы можем настроить огурец так же, как они сделали.
Объяснение:
Чтобы объяснить, Gherkin step def использует естественный язык, который не имеет никаких ограничений.
Я хочу для наложения некоторого ограничения, такого как RuleSpeak:
Каждый арендованный автомобиль должен принадлежать ровно одной ветви.
^^ ^^ ^^ ^^ ^^ ^^ Ключевое слово Обозначение ключевое слово Обозначение ключевое слово Обозначение для идентификатор Для концепции существительного для модальности Для квантификатора типа факта концепция существительного
Причина этого в том, что в нашей команде / проекте / организации есть огурец для A TDD (а не как в Drools), и, к сожалению, Как и многие другие организации, cucumber также служит инструментом тестирования интеграции. Это делает написание задачи «огурец / интеграция» очень болезненным для разработчиков. Поэтому я пытаюсь использовать гибрид подхода огурец / рупик, где огурец будет использовать регулярное выражение для соответствия шагу, но у шага будет некоторый дополнительный синтаксис ie, шаги будут соответствовать определенному формату, такому как выше.
Так можем ли мы определить ограниченное подмножество ключевых слов / слов, которые будут разрешены при написании шага огурца? Я имею в виду вместо написания любого произвольного шага, например,
«одна ветвь должна иметь одно транспортное средство»
или
«одно транспортное средство должно принадлежать одной ветке»
et c, как и многие другие варианты.
Мы должны разрешить разработчикам писать, используя несколько выбранных словарей и для каждой позиции. Также определить парсер / язык / оператор. Это означает, что если используется определенное слово, будет выполнено определенное действие / операция.