diff --git a/testing/pom.xml b/testing/pom.xml
index aa10392aa8..bfd47dbc4a 100644
--- a/testing/pom.xml
+++ b/testing/pom.xml
@@ -45,6 +45,12 @@
test
+
+ info.cukes
+ cucumber-java8
+ ${cucumber.version}
+ test
+
org.pitest
diff --git a/testing/src/test/java/com/baeldung/testing/shopping/ShoppingIntegrationTest.java b/testing/src/test/java/com/baeldung/testing/shopping/ShoppingIntegrationTest.java
new file mode 100644
index 0000000000..7bf8641ed6
--- /dev/null
+++ b/testing/src/test/java/com/baeldung/testing/shopping/ShoppingIntegrationTest.java
@@ -0,0 +1,12 @@
+package com.baeldung.testing.shopping;
+
+import org.junit.runner.RunWith;
+
+import cucumber.api.CucumberOptions;
+import cucumber.api.junit.Cucumber;
+
+@RunWith(Cucumber.class)
+@CucumberOptions(features = { "classpath:features/shopping.feature" })
+public class ShoppingIntegrationTest {
+
+}
diff --git a/testing/src/test/java/com/baeldung/testing/shopping/ShoppingStepsDef.java b/testing/src/test/java/com/baeldung/testing/shopping/ShoppingStepsDef.java
new file mode 100644
index 0000000000..2c4bf2eeae
--- /dev/null
+++ b/testing/src/test/java/com/baeldung/testing/shopping/ShoppingStepsDef.java
@@ -0,0 +1,22 @@
+package com.baeldung.testing.shopping;
+
+import static org.junit.Assert.assertEquals;
+import cucumber.api.java8.En;
+
+public class ShoppingStepsDef implements En {
+
+ private int budget = 0;
+
+ public ShoppingStepsDef() {
+
+ Given("I have (\\d+) in my wallet", (Integer money) -> budget = money);
+
+ When("I buy .* with (\\d+)", (Integer price) -> budget -= price);
+
+ Then("I should have (\\d+) in my wallet", (Integer finalBudget) -> {
+ assertEquals(budget, finalBudget.intValue());
+ });
+
+ }
+
+}
\ No newline at end of file
diff --git a/testing/src/test/resources/features/shopping.feature b/testing/src/test/resources/features/shopping.feature
new file mode 100644
index 0000000000..d1ce43df75
--- /dev/null
+++ b/testing/src/test/resources/features/shopping.feature
@@ -0,0 +1,11 @@
+Feature: Shopping
+
+ Scenario: Track my budget
+ Given I have 100 in my wallet
+ When I buy milk with 10
+ Then I should have 90 in my wallet
+
+ Scenario: Track my budget
+ Given I have 200 in my wallet
+ When I buy rice with 20
+ Then I should have 180 in my wallet