Cucumber

Trying to do BDD with traditional testing frameworks proved to be a painful process. For a while developers persevered with inventive ways to express unit tests in a behavioral and descriptive way but, as interest grew, new tools were developed to facilitate this process.

Ideas based around BDD had been floating around for several years before the murmurings I mentioned above. As early as 2003, Dan North had been working on a framework called JBehave, which was ported to Ruby as RBehave. When Rspec emerged as the BDD tool of choice for Ruby in 2004–2005, this was extended in the form of the Rspec story runner, which was eventually rewritten by Aslak Hellesøy in 2008. This attempted to clean up some of the usability issues with the story runner, added in easier set up and configuration, and made meaningful use of colorized output. The result was Cucumber.

Cucumber has now had over 300 contributors. On GitHub, more than 350 projects mention Cucumber, use Cucumber, or are built to work with or extend its functionality. The Cucumber RubyGem is downloaded 1,500 times a day. I think it’s fair to say Cucumber is the most widely-used automated open source acceptance test tool.

Cucumber supports 9 programming languages, and allows specifications to be written in 40 spoken languages.

There are five components[14] or modules within the Cucumber project, three of which concern us directly in this book:

Cucumber

The core of the project; the engine that runs tests and returns results.

Aruba

A library for testing command-line programs.

Gherkin

The language in which features are specified, and the parser that decodes them.

In the next chapter, we’ll introduce a framework that makes it possible to integrate Cucumber and Chef to provide a testing framework for Infrastructure as Code.



[14] The other two are Cucumber-Rails, designed specifically for testing web applications written using the Ruby on Rails framework, and Cuke4Duke—an implementation of Cucumber running on the Java virtual machine, enabling testing of next generation languages such as Scala and Clojure.

Get Test-Driven Infrastructure with Chef now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.