Skip to content

Latest commit

 

History

History
121 lines (95 loc) · 2.72 KB

File metadata and controls

121 lines (95 loc) · 2.72 KB

jdoc-cucumber

Part of jdoc-test. Runs gherkin features written in javadocs.

<dependency>
    <groupId>io.github.boolivar.jdoctest</groupId>
    <artifactId>jdoc-cucumber</artifactId>
    <version>0.12.0</version>
    <scope>test</scope>
</dependency>

  1. Write jdoc gherkin feature using <code lang="gherkin"> tag:
/**
 * <pre><code lang="gherkin">
 * Feature: foo() invokes bar()
 *   Scenario: invoke foo()
 *     When invoke foo()
 *     Then bar() invoked
 * </code></pre>
 */
public class Foo {

    private final Bar bar;

    public Foo(Bar bar) {
        this.bar = bar;
    }

    public void foo() {
        bar.bar();
    }
}
  1. Provide cucumber and jdoc-cucumber test dependencies.

build.gradle example:

repositories {
    mavenCentral()
}

dependencies {
    testRuntimeOnly "io.github.boolivar.jdoctest:jdoc-cucumber:0.12.0"
    testImplementation "io.cucumber:cucumber-java:7.17.0"
}

Important

jdoc-cucumber versions before 0.9.0 available only on jitpack.

build.gradle example:

repositories {
    maven { url "https://jitpack.io" }
}
dependencies {
    testRuntimeOnly "io.github.boolivar.jdoctest:jdoc-cucumber:0.8.1"
    testImplementation "io.cucumber:cucumber-java:7.17.0"
}
  1. Write cucumber step definitions.
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;

import static org.mockito.BDDMockito.*;

public class StepDefinitions {

    private final Bar bar = mock(Bar.class);

    private final Foo foo = new Foo(bar);

    @When("invoke foo()")
    public void invokeFoo() {
        foo.foo();
    }

    @Then("bar() invoked")
    public void verifyBarInvoked() {
        then(bar).should().bar();
    }
}
  1. Set up paths to java sources using test suite @SelectDirectories or @SelectFile and step definitions package using io.cucumber.junit.platform.engine.Constants.GLUE_PROPERTY_NAME configuration parameter:
import org.junit.platform.suite.api.ConfigurationParameter;
import org.junit.platform.suite.api.IncludeEngines;
import org.junit.platform.suite.api.SelectDirectories;
import org.junit.platform.suite.api.Suite;

import static io.cucumber.junit.platform.engine.Constants.GLUE_PROPERTY_NAME;

@Suite
@IncludeEngines("jdoc-cucumber")
@SelectDirectories("src/main/java")
@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "step.definitions.package")
public class JdocCucumberTestSuite {
}
  1. Run tests with jdoc-cucumber junit engine.

gradle example:

gradle test