cucumber-rust
An implementation of the Cucumber testing framework for Rust. Fully native, no external test runners or dependencies.
Usage
Create a directory called tests/
in your project root and create a test target of your choice. In this example we will name it cucumber.rs
.
Add this to your Cargo.toml
:
[[]]
= "cucumber"
= false # Allows Cucumber to print output instead of libtest
[]
= "^0.5.1"
If using stable Rust, you need to disable the nightly
feature:
cucumber_rust = { version = "^0.5.1", default-features = false }
Create a directory called features/
and put a feature file in it named something like example.feature
. It might look like:
Feature: Example feature
Scenario: An example scenario
Given I am trying out Cucumber
When I consider what I am doing
Then I am interested in ATDD
And we can implement rules with regex
And here's an example of implementing those steps using our tests/cucumber.rs
file:
extern crate cucumber_rust;
// Declares a before handler function named `a_before_fn`
before!;
// Declares an after handler function named `an_after_fn`
after!;
// A setup function to be called before everything else
cucumber!
The cucumber!
creates the main
function to be run.
The steps!
macro generates a function named steps
with all the declared steps in the module
it is defined in. Ordinarily you would create something like a steps/
directory to hold your
steps modules instead of inline like the given example.
The full gamut of Cucumber's Gherkin language is implemented by the gherkin-rust project. Most features of the Gherkin language are parsed already and accessible via the relevant structs.
License
This project is licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.