Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/openshine/kucumberl
https://github.com/openshine/kucumberl
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/openshine/kucumberl
- Owner: openshine
- License: apache-2.0
- Created: 2012-10-29T16:06:04.000Z (about 12 years ago)
- Default Branch: master
- Last Pushed: 2015-10-16T09:31:35.000Z (about 9 years ago)
- Last Synced: 2024-07-19T22:44:12.645Z (4 months ago)
- Language: Erlang
- Size: 315 KB
- Stars: 34
- Watchers: 7
- Forks: 15
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Kucumberl
=========* [What is Kucumberl?](#about)
* [Quick start](#starthere)
* [How can i use kucumberl in my erlang project?] (#kucumberlmyproject)
* [How can i create my first test?] (#quicktutorial)
* [Author](#author)
* [License](#license)A pure-erlang, open-source, implementation of [Cucumber](http://cukes.info)
It's easy
$ git clone https://github.com/openshine/kucumberl
$ cd kucumberl
$ makeAnd if you want to run the kucumberl examples...
$ make test
or (if you want to see examples with failures)
$ ./kucumberl
### How can I use kucumberl in my erlang project?
You can copy the kucumberl binary generated when you excute 'make' to your project folder. kucumberl is a self-contained Erlang script.
### How can I create my first test?
Copy the kucumberl script to your project folder
$ cp /kucumberl /
Create the test folders.
$ cd
$ mkdir -p tests/welcome/features/step_definitionsThe folder structure is easy to explain
$ tree
.
|-- kucumberl <- This is your kucumberl script
`-- tests <- This is your test directory
`-- welcome <- This is a directory to store a group of features to test
`-- features <- Here goes the feature's files. In other words, the test description.
|-- step_definitions <- Here goes the erl files.Now, we go to create a new feature file to test the "welcome process" of our app.
A feature file is a description of a scenario in plain text. The format of this file is really easy to read and write:
Given a situation, When something, Then something...
Please, put the next at ./tests/welcome/features/welcome_user.feature```feature
Feature: Welcome user
In order to check the welcome process
As a new user
I want to check the welcome service in this siteScenario: Hello my name is...
Given I type my name, 'John'
And I type my surname, 'Doe'
When I press 'good welcome' button
Then I see in the screen 'Hello, Mr John Doe'```
If you save the feature file and execute ./kucumberl you will see something like that.
```
Feature: Welcome user
Scenario: Hello my name is...
Given I type my name, 'John' Not implementated
And I type my surname, 'Doe' Not implementated
When I press 'good welcome' button Not implementated
Then I see in the screen 'Hello, Mr John Doe' Not implementated0 Scenario (0 failed, 0 passed)
4 Steps (0 failed, 0 passed, 0 skipped, 4 not implementated)
```Yes, you have not implemented the test.
This is the next step, you have to define in the steps_definitions directory what to do for each step (Given-When-Then).
Now, please, put the next code at ./tests/welcome/features/step_definitions/welcome_user.erl```erlang
-module(welcome_user).
-export([setup/0, teardown/0, given/3, 'when'/3, then/3]).-record(state, {name, surname}).
setup() -> #state{}.
given ("I type my name, '(\\w+)'", State, [Name]) ->
%% Really complex testing code here! :P
{ok, State#state{name = Name}};given ("I type my surname, '(\\w+)'", State, [Surname]) ->
%% Really complex testing code here! :P
{ok, State#state{surname = Surname}}.'when' ("I press 'good welcome' button", State, []) ->
%% Do something :P
{ok, State}.then ("I see in the screen '(.+)'", State, [Str]) ->
Name = State#state.name,
Surname = State#state.surname,%% More complex testing code to generate the "hello" string :P
GenStr = "Hello, Mr " ++ Name ++ " " ++ Surname,case Str =:= GenStr of
true -> {ok, State};
false -> {failed, "Wow!"}
end.teardown() -> ok.
```And now, execute ./kucumberl and you will see something like that.
```
$ ./kucumberl
Feature: Welcome user
Scenario: Hello my name is...
Given I type my name, 'John' OK
And I type my surname, 'Doe' OK
When I press 'good welcome' button OK
Then I see in the screen 'Hello, Mr John Doe' OK1 Scenario (0 failed, 1 passed)
4 Steps (0 failed, 4 passed, 0 skipped, 0 not implementated)
```If you want to check more complex examples, go [here](http://github.com/openshine/kucumberl/tree/master/examples).
This is an [openshine](http://www.openshine.com) project developed by:
* Roberto Majadas (roberto.majadas at openshine.com)## License ##
Copyright 2012 OpenShine S.L.
Licensed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0)