Skip to main content
Home
  • Tutorials
    • Quality Assurance
    • Software Development
    • Machine Learning
    • Data Science
  • About Us
  • Contact
programsbuzz facebook programsbuzz twitter programsbuzz linkedin
  • Log in

Main navigation

  • Tutorials
    • Quality Assurance
    • Software Development
    • Machine Learning
    • Data Science
  • About Us
  • Contact

Cucumber Duplicate and Ambiguous Step Definitions

Profile picture for user devraj
Written by devraj on 08/30/2020 - 04:30

Sometimes, we get Ambiguous Step Definition or Duplicate Step Definition errors while writing Step Definition in Cucumber. 

If Cucumber encounters duplicate or ambiguous Steps, all the other Steps of the Scenarios are skipped, and the Scenario is marked as a fail.

These errors are common when we have multiple Steps Definitions files or Large Projects. 

You do not have to worry about this because Cucumber itself identifies it and returns an error for you, and it will also tell you the method name which is creating these problems.

Take an example of below Scenario:

@Duplicate
  Scenario: Click on login link
    Given I am on the homepage
    And I click on login link

Table of Contents

  1. Cucumber Duplicate Step Definitions
  2. Cucumber Ambiguous Step Definitions
  3. Video Tutorial

Cucumber Duplicate Step Definitions

When Cucumber finds multiple Step Definitions that are the same, it throws a Duplicate Step Definitions exception.

Check below step definition; the exact Step Definition has been declared twice for the Given and When Step. You can observe method name and keyword is different, but the regular expression is the same. 

When you execute below step definition, you will get duplicate step definition errors.

@Given("^I am on the homepage$")
public void homepage1() 
{
}

@Then("^I am on the homepage$")
public void homepage2() 
{
}

Error in console after executing the scenaro

io.cucumber.core.runner.DuplicateStepDefinitionException: 
Duplicate step definitions in 
com.pb.cucumbertest.stepdefinitions.FirstSD.homepage1() 
and 
com.pb.cucumbertest.stepdefinitions.FirstSD.homepage2()

This is because Cucumber doesn't distinguish between Given/When/Then. It only matches based on the regexp. If two or more regexen match, Cucumber can't figure out which one to run.

Cucumber Ambiguous Step Definitions

When Cucumber Finds a Step matches more than one Step Definitions using regular expressions, it throws an Ambiguous Step Definitions exception.

@Given("^I am on the homepage$")
public void homepage1() 
{
}

@Then("^I am on (.*?) homepage$")
public void homepage2() 
{
}

After execution error will be

io.cucumber.core.runner.AmbiguousStepDefinitionsException: 
"I am on the homepage" matches more than one step definition:
"^I am on (.*?) homepage$" in com.pb.cucumbertest.stepdefinitions.FirstSD.homepage2()
"^I am on the homepage$" in com.pb.cucumbertest.stepdefinitions.FirstSD.homepage1()
Related Content
Cucumber Java Tutorial
Cucumber Step Definition
Cucumber Step Definitions Regex Examples
Tags
Cucumber Java
  • Log in or register to post comments

Choose Your Technology

  1. Agile
  2. Apache Groovy
  3. Apache Hadoop
  4. Apache HBase
  5. Apache Spark
  6. Appium
  7. AutoIt
  8. AWS
  9. Behat
  10. Cucumber Java
  11. Cypress
  12. DBMS
  13. Drupal
  14. GitHub
  15. GitLab
  16. GoLang
  17. Gradle
  18. HTML
  19. ISTQB Foundation
  20. Java
  21. JavaScript
  22. JMeter
  23. JUnit
  24. Karate
  25. Kotlin
  26. LoadRunner
  27. matplotlib
  28. MongoDB
  29. MS SQL Server
  30. MySQL
  31. Nightwatch JS
  32. PactumJS
  33. PHP
  34. Playwright
  35. Playwright Java
  36. Playwright Python
  37. Postman
  38. Project Management
  39. Protractor
  40. PyDev
  41. Python
  42. Python NumPy
  43. Python Pandas
  44. Python Seaborn
  45. R Language
  46. REST Assured
  47. Ruby
  48. Selenide
© Copyright By iVagus Services Pvt. Ltd. 2023. All Rights Reserved.

Footer

  • Cookie Policy
  • Privacy Policy
  • Terms of Use