Description
JGiven is a developer-friendly and pragmatic BDD tool for Java. Developers write scenarios in plain Java using a fluent, domain-specific API, JGiven generates reports that are readable by domain experts.
JGiven alternatives and similar libraries
Based on the "Testing" category.
Alternatively, view JGiven alternatives based on common mentions on social networks and blogs.
-
Karate
Karate is the only open-source tool to combine API test-automation, mocks, performance-testing and even UI automation into a single, unified framework. -
TestContainers
Provides throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container. -
PowerMock
Enables mocking of static methods, constructors, final classes and methods, private methods and removal of static initializers. -
PIT
Fast mutation-testing framework for evaluating fault-detection abilities of existing JUnit or TestNG test-suites. -
GreenMail
In-memory email server for integration testing. Supports SMTP, POP3 and IMAP including SSL. -
Arquillian
Integration and functional testing platform for Java EE containers. -
Scott Test Reporter
Detailed failure reports and hassle free assertions for Java tests - Power Asserts for Java -
J8Spec
J8Spec is a library that allows tests written in Java to follow the BDD style introduced by RSpec and Jasmine.
Get performance insights in less than 4 minutes
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest. Visit our partner's website for more details.
Do you think we are missing an alternative of JGiven or a related project?
Popular Comparisons
README
JGiven is a developer-friendly and pragmatic BDD tool for Java. Developers write scenarios in plain Java using a fluent, domain-specific API, JGiven generates reports that are readable by domain experts.
Why another BDD tool?
Behavior-Driven Development (BDD) is a development method where business analysts, developers, and testers describe the behavior of a software product in a common language and notation. Behavior is typically described in terms of scenarios, which are written in the Given-When-Then notation. The common language and notation is one cornerstone of BDD. The other cornerstone is that the defined scenarios are executable, form a comprehensive test suite, and a living documentation for the software product.
In classical BDD tools for Java like JBehave or Cucumber scenarios are written in plain text files. This allows non-developers to write scenarios, because no programming knowledge is required. To make scenarios executable, developers write so-called step-implementations. To bind plain text to step implementations regular expressions are used. For developers maintaining these executable scenarios has a high overhead that is not required if tests would be directly written in a programming language.
Beside the classical BDD tools there are a number of tools for Java to write BDD tests in a programming language like Groovy (easyb) or Scala (ScalaTest). To our knowledge, however, there is no BDD tool where scenarios can be written in plain Java.
Finally, there are specification testing frameworks like Spock (Groovy) or LambdaBehave which are very developer-centric and good for unit-testing, but the generated reports are not in Given-When-Then form and are not easily readable by non-developers.
BDD with JGiven
- Scenarios are written in standard Java code using a fluent, domain-specific API (no extra language like Scala or Groovy needed, no IDE plugin needed)
- Java method names and parameters are parsed during test execution (no extra annotations needed)
- Scenarios are executed by either JUnit or TestNG (no extra test runner needed)
- Scenarios consist of so-called stages, which share state by injection, providing a modular way of writing Scenarios.
- JGiven generates scenario reports for business owners and domain experts
Example
@Test
public void a_pancake_can_be_fried_out_of_an_egg_milk_and_flour() {
given().an_egg().
and().some_milk().
and().the_ingredient( "flour" );
when().the_cook_mangles_everything_to_a_dough().
and().the_cook_fries_the_dough_in_a_pan();
then().the_resulting_meal_is_a_pancake();
}
The above test can be executed like any JUnit test. During the execution, JSON files are generated that can then be used afterwards to generate test reports. By default, a plain text report is shown in the console, which would look as follows:
Scenario: a pancake can be fried out of an egg milk and flour
Given an egg
And some milk
And the ingredient flour
When the cook mangles everything to a dough
And the cook fries the dough in a pan
Then the resulting meal is a pancake
In addition, you can generate a HTML Report.
Getting Started
- Start by reading the documentation section on JGiven's website.
- See the talk on JGiven held on the TNG Big TechDay
License
JGiven is published under the Apache License 2.0, see http://www.apache.org/licenses/LICENSE-2.0 for details.
Contributing
See [CONTRIBUTING](CONTRIBUTING.md)
*Note that all licence references and agreements mentioned in the JGiven README section above
are relevant to that project's source code only.