• in Gherkin format (almost…) • in text files, string, etc. Get Steps • as regex + code • will be executed against each steps of scenarios if regex match • categorized with given/when/then Execute Scenarios Against Steps Provide Execution Report
test a Grammar, even complicated one • Beware of embedding too much regular expressions because of their greediness • Large file or complex grammar: beware of performance and maintenability penalty with one grammar to parse the whole, better with modular/ separated parser
user convenience as well as the « before » and « after » functions • Regex can’t be stored as map key because regex are stateful in Java L, so the string regex is used as a key and the function is the value
use one object with a state somewhere during scenarios execution • Scenarios and scenario’s steps are a functional path through the domain and so THEY ARE DEPENDANT (contrary to unit testing) and are chained amongst themselves • I prefer to think about steps as a chain where the return of a previous step is provided as an argument to the next one, and so on…
cumbersome details for getting the scenario as a data structure and then feeding the steps • The specification execution is view as a function that return the execution report
can! J • Full idiomatic Clojure Implementation • I wanted better REPL integration and functional point of view • Include Rules handling and execution as an enhancement to BDD • Alternative in Clojure: cucumber-jvm, speclj (internal DSL)