Today Merchant Warehouse is excited to announce that we're open sourcing our extensions to cucumber-jvm, called zucchini. These extensions make it significantly easier to use the popular Behavior-driven Development framework.
Cucumber lets software development teams describe how software should behave in plain text. The text is written in a business-readable domain-specific language and serves as documentation, automated tests and development-aid - all rolled into one format.
We love Cucumber, but it very much feels like a Ruby framework ported to Java. Like square pegs and round holes, things don't quite fit together. That is, until you've tried zucchini. The zucchini framework offers tighter integration with the Java programming language and the JUnit testing framework, providing developers and testers alike with a much more natural programming experience.
Some of zucchini’s notable features include:
- Better integration with JUnit. JUnit’s @BeforeClass and @AfterClass annotations work. JUnit's @Before and @After annotations also work, allowing you to choose to use them or Cucumber's equivalent annotations.
- Object inheritance works with your step definitions, just like it should in Java. You can define your step definitions in a base class and inherit them in child classes.
- Tight coupling between Gherkin feature files and your JUnit test classes. Bind your JUnit test class to one or more feature files as you please. No longer do you have to worry about Cucumber’s dreaded “duplicate step definitions found” error.
- Also, with zucchini, you can bind any arbitrary JUnit class to any Gherkin feature file(s). This makes it easy to reuse & share test cases. This is extremely helpful when using IoC containers, such as Spring.
- There's no need for empty JUnit test runner classes. Declare your @Zucchini annotation right on your step definition files.
- Get HTML and JSON outputs by default, for easy integration into your CI systems, such as Jenkins.
With Merchant Warehouse’s zucchini, behavior driven development in Java is easy and natural.
Since Merchant Warehouse's inception, we have stood on the shoulders of giants in the open source world. Many of the libraries, tools and platforms we depend on are open. We are proud and excited that we're freely giving back to the communities that collectively have given us so much. It seems only natural that we give you all a chance to contribute back and make the open source ecosystem a better place for everyone.
Merchant Warehouse’s Cucumber extensions are located in our zucchini repository on GitHub. Download our code. Fork our repository. Issue a pull request or file an issue. Have fun, and pay it forward.