Skip to main content

Examples

The fastest way to learn SpecBinder is to read a small, focused example for the construct you care about. Every example below ships as a runnable Maven project in the SpecBinder repository — clone it and mvn test to see the generated code on your own machine.

Basics

The fundamentals — one Gherkin construct per example.

ExampleWhat it covers
Hello WorldThe smallest possible feature — one scenario, plain steps, no parameters
Step ParametersType inference for quoted values: String, Integer, Long, Double, Boolean, Character
Implementing StepsEnd-to-end working example with real assertions and shared state
RulesGherkin Rule blocks → JUnit @Nested test classes
BackgroundFeature- and rule-level Background blocks → @BeforeEach
Scenario OutlineParameterized scenarios → JUnit @ParameterizedTest with @CsvSource
TagsGherkin tags → JUnit @Tag for selective execution
Convention DiscoveryBare @Gherkin2JUnit with co-located feature files

Common use cases

Patterns that come up beyond the basics.

ExampleWhat it covers
Typed Data TablesThe default LIST_OF_OBJECT_PARAMS mode — typed inner classes
DocStringsMulti-line input (JSON, plain text) → trailing String parameter
Sharing Steps via a Base ClassPut common step implementations in a base class the marker extends
Type RefinementRefine generated Param classes with enums for compile-time safety
TDD WorkflowRed-green iteration with empty rules and scenarios tagged @new
Glob PatternsOne marker class → many feature files via glob
Config InheritanceShare options across markers with @Gherkin2JUnitOptions on a base class

Going further

Trickier, more advanced territory — patterns that lean on deeper JUnit or SpecBinder mechanics.

ExampleWhat it covers
Concrete ModeOpt out of the default abstract mode — a directly-runnable class with failing stubs for unimplemented steps
Parameter ResolutionJUnit-resolved step parameters — TestInfo, @TempDir, and custom ParameterResolvers
Organizing Steps into InterfacesGroup step methods into domain interfaces the marker implements
Execution ReporterThe dev.specbinder:execution-reporter module — one JSON file per feature
Cucumber Data TablesThe CUCUMBER_DATA_TABLE mode for Cucumber's DataTable API
Cucumber Annotations@Given / @When / @Then matching with custom method names
Build-Log DiagnosticsTune the annotation processor's build-log output with the verbosity option

Running an example

Every example is a self-contained Maven project. After cloning the repo:

cd examples/getting-started/example-1
mvn test

The generated test class appears under target/generated-test-sources/ — open it in your IDE to see what the annotation processor produced.