/ginkgo4j

A Java BDD Testing Framework (based on RSpec and Ginkgo)

Primary LanguageJava

Ginkgo4j

A Java BDD Testing Framework (based on RSpec and ginkgo)

Build Status

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

Requires

  • Java 8

Getting Started

  • Add the ginkgo4j to your project as a test dependency. For a maven project add:
<dependency>
    <groupId>com.github.paulcwarren</groupId>
    <artifactId>ginkgo4j</artifactId>
    <version>1.0.14</version>
    <scope>test</scope>
</dependency>

or for a Gradle project add:

compile 'com.github.paulcwarren:ginkgo4j:1.0.14'

or for a Gradle 7 project add:

dependencies {
    testImplementation 'com.github.paulcwarren:ginkgo4j:1.0.14'
}

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)
  • And the following template:
	{
		Describe("Replace me", () -> {
			It("Replace me too", () -> {
				fail("Not yet implemented");
			});
		});
	}
  • Optionally, you can control the number of threads used with @Ginkgo4jConfiguration(threads = 1)

Getting Started with Spring

  • 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)
  • Add the following template:
	{
		Describe("Replace me", () -> {
			It("Replace me too", () -> {
				fail("Not yet implemented");
			});
		});
	}
	@Test
	public void noop() {
	}

Screenshots

Eclipse

Eclipse

Intellij

Intellij