A Java BDD Testing Framework (based on RSpec and ginkgo)
The project was initially created by Paul Warren, but I needed to bring it up to date.
Jump to the docs to see more.
Feature List:
-
Structure your BDD-style tests expressively:
- Nestable Describe and Context container blocks
- BeforeEach and AfterEach blocks for setup and teardown
- It blocks that hold your assertions
- JustBeforeEach blocks that separate creation from configuration (also known as the subject action pattern).
-
Fast testing with parallel execution
-
Test runners that lets you:
- Focus tests through FDescribe, FContext and FIt constructs
- Test your Spring applications
- At least Java 17
- Add the ginkgo4j to your project as a test dependency. For a maven project add:
<dependency>
<groupId>io.github.vsvyastki</groupId>
<artifactId>ginkgo4j</artifactId>
<version>2.2.0</version>
<scope>test</scope>
</dependency>or for a Gradle project add:
compile 'io.github.vsvyastki:ginkgo4j:2.2.0'or for a Gradle 7+ project add:
dependencies {
testImplementation 'io.github.vsvyastki:ginkgo4j:2.2.0'
}for other build systems see here.
- Create a junit test class
- Add the following imports:
import org.junit.runner.RunWith;
import static com.github.paulcwarren.ginkgo4j.Ginkgo4jDSL.*;
import com.github.paulcwarren.ginkgo4j.Ginkgo4jConfiguration;
import com.github.paulcwarren.ginkgo4j.Ginkgo4jRunner;- Annotate your test class with:
@RunWith(Ginkgo4jRunner.class)
public class MyTests {
}- And the following template:
public class MyTests {
{
Describe("Replace me", () ->
It("Replace me too", () -> fail("Not yet implemented")));
}
}- Optionally, you can control the number of threads used with
@Ginkgo4jConfiguration(threads = 1)
- Add the following imports:
import org.junit.runner.RunWith;
import static com.github.paulcwarren.ginkgo4j.Ginkgo4jDSL.*;
import com.github.paulcwarren.ginkgo4j.Ginkgo4jSpringRunner;- Annotate your test class with:
@RunWith(Ginkgo4jSpringRunner.class)
public class MyTests {
}- Add the following template:
public class MyTests {
{
Describe("Replace me", () ->
It("Replace me too", () -> fail("Not yet implemented")));
}
@Test
public void noop() {
}
}
