Skip to content

artofcode.info

The beauty of coding!

Menu
  • Home
  • Front-End
    • Angular
    • Javascript
    • ReactJS
  • Back-End
    • Java
    • Php
  • Test Automation
  • News
Menu
CUCMBER-FOR-BDD

Cucumber 6 Spring Integration

Posted on October 26, 2020December 7, 2022 by guru

Cucumber is a very powerful testing framework, which follows the BDD (behavior-driven development) methodology. It enables developers to write high-level use cases in plain text that can be verified by non-technical stakeholders, and turn them into executable tests, written in a language called Gherkin.

Cucumber 6 Spring Integration is intended to make test automation easier. Once we have the Cucumber tests integrated with Spring, we should be able to execute them along with the Maven build.

1. Adding Maven Dependencies

In order to reduce the code, and manage the version easier, let’s create a maven property for the cucumber version. At top of your pom file add new section properties:

<properties>
   <cucumber.version>6.8.0</cucumber.version>
   <spring.boot.version>2.3.4.RELEASE</spring.boot.version>
</properties>

Let’s get started using the Cucumber-Spring integration by defining the Maven dependencies – starting with the Cucumber-JVM dependency:

<dependency>
 <groupId>io.cucumber</groupId>
 <artifactId>cucumber-java</artifactId>
 <version>${cucumber.version}</version>
</dependency>

Next, we’ll add the JUnit and Cucumber testing dependency:

<dependency>
 <groupId>io.cucumber</groupId>
 <artifactId>cucumber-junit</artifactId>
 <version>${cucumber.version}</version>
</dependency>

And finally, the Spring and Cucumber dependency:

<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-spring</artifactId>
    <version>${cucumber.version}</version>
</dependency>

Again, we can check out the most recent version of Cucumber Spring over here.

2. Cucumber Spring Configurations

Let’s configure cucumber 6 with spring, let’s start with configuration for Spring, which will create a configuration class that will scan our folders to identify all services and components.

@Configuration
@ComponentScan(basePackages = {"com.example.spring"})
public class TestConfig {
}

Please change values from basePackages to your Packages.

Now we will create a Cucumber-Spring Integration class.

import io.cucumber.spring.CucumberContextConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ContextConfiguration;

@CucumberContextConfiguration
@ContextConfiguration(classes = {TestConfig.class})
@SpringBootTest
public class SpringIntegrationCucumber {
}

We are using the latest Cucumber  and to make Cucumber aware of our test configuration we can annotate a configuration class on our glue path with @CucumberContextConfiguration and with one of the following annotations: @ContextConfiguration, @ContextHierarchy or @BootstrapWith. Because we are using SpringBoot, you can annotate our configuration class with @SpringBootTest.

The last step is to create Runner

@RunWith(Cucumber.class)
@CucumberOptions(features = "src/test/resources")
public class RunTests {
}

3. Sample feature

The last step is to create a sample feature file and to implement a huge logic under step implementation.

Under test resources, we will create a sample feature with a sample step implementation

Scenario: Implemented step
  Given user prints something

And implementation for this sample test:

public class BasicSteps {

    @Given("^user prints something$")
    public void userPrint() {
    final String message = "Holla amigos";
    // SOME huge logic
    System.out.println(message);
}
}

Having configured Cucumber with Spring, it will be handy to use Spring-configured components in BDD testing. This is a simple guide for Cucumber 6 Spring Integration into your application.

Recent Posts

  • An overview of Accelerate: Building and Scaling High-Performance Technology Organizations
  • Cucumber JUnit XML report with logs
  • How to add log messages to the cucumber Jenkins report
  • Factory Method Pattern in the creation of Selenium WebDriver
  • How to attach log message to cucumber report via MDC
  • How to send different values in cucumber features based on profile
  • How to log execution time for cucumber steps
  • Strategy Pattern in Test Automation with Selenium WebDriver

Categories

  • Back-End
  • Java
  • News
  • Test Automation
  • Uncategorized
© 2023 artofcode.info | Powered by Minimalist Blog WordPress Theme