samueltbrown / gradle-cucumber-plugin

Plugin to support cucumber-jvm in Gradle builds
MIT License
79 stars 44 forks source link

Download

Gradle Cucumber Plugin

![Cucumber Logo] (https://cucumber.io/images/cucumber-logo.svg)

The gradle cucumber plugin provides the ability to run cucumber acceptance tests directly from a gradle build. The plugin utilizes the cucumber cli provided by the cucumber-jvm project and should support any of the languages utilized in cucumber-jvm.

(Currently only tested with Java, Groovy, and JRuby more coming soon!)

Contributors

Using the plugin in your gradle build script

From v0.7 on

To use in Gradle 2.1 and later…

      plugins {
        id "com.github.samueltbrown.cucumber" version "0.9"
      }

To use in earlier versions of Gradle…

      buildscript {
        repositories {
          jcenter()
        }
        dependencies {
          classpath "com.github.samueltbrown:gradle-cucumber-plugin:0.9"
        }
      }

      apply plugin: "com.github.samueltbrown.cucumber"

Before v0.7

You can apply the plugin using the following buildscript:

  apply plugin: 'cucumber'

  buildscript {
      repositories {
          mavenCentral()
      }

      dependencies {
          classpath 'com.github.samueltbrown:gradle-cucumber-plugin:0.6'
      }
  }

Older versions can be downloaded directly from GitHub like so;

  buildscript {
      apply from: 'https://github.com/samueltbrown/gradle-cucumber-plugin/raw/master/repo/gradle-cucumber-plugin/gradle-cucumber-plugin/0.3/cucumberinit.gradle'
  }

Running the Tests only

Once the plugin has been applied, the project dependencies need to be updated with the cucumber-jvm jar file needed for your language. Below 'groovy' is the chosen language.

  dependencies {

    ...

    cucumberRuntime 'info.cukes:cucumber-groovy:1.2.2'

  }

Building and Running the Tests

If you have a src/cucumber source set (similar to src/test), the plugin will automatically detect it and setup Java tasks and configurations for you. The "cucumber" code unit depends on "test", the same way "test" depends on "main". Also, choose your library dependencies:

  dependencies {

    cucumberCompile 'info.cukes:cucumber-groovy:1.2.2'

  }

Write your feature files under src/cucumber/resources.

Available Tasks

Currently the plugin only supports one task to run your cucumber tests:

  > gradle cucumber

Cucumber Task Configuration

The cucumber task has several configurable properties:

Example task configuration

cucumber {
    formats = ['pretty','json:build/cucumber.json','junit:build/cucumber.xml']
    glueDirs = ['src/test/resources/env',
                'src/test/resources/support',
                'src/test/resources/step_definitions']
    featureDirs = ['src/test/resources/features']
    tags = ['@billing', '@important']
    monochrome = false
    strict = false
    dryRun = false
    ignoreFailures = false

    jvmOptions {
      maxHeapSize = '512m'
      environment 'ENV', 'staging'
    }
}

Prerequisites

You must use Cucumber version 1.1.6 or higher.

Release Notes

v0.9

v0.8

v0.7.2

v0.7.1

v0.7

v0.6

Coming Soon

Contributing

As you would expect, clone, push to GitHub and create a pull request for us to review and merge.

Make sure you are using jdk 1.6 when running tests (jenv is our friend here).

Pushing to Maven Central

  ./gradlew \
    -Psigning.secretKeyRingFile=path/to/ring.gpg \
    -Psigning.keyId=GPG_KEYID \
    -Psigning.password=$GPG_PASS \
    -PsonatypeUsername=$SONATYPE_USER \
    -PsonatypePassword=$SONATYPE_PASS \
    clean uploadArchives

It is possible to save some or all of those properties to ~/.gradle/gradle.properties.