Search code examples
selenium-webdriverenumscucumbercucumber-jvmcucumber-java

Is it possible to pass Java-Enum as argument from cucumber feature file


I am currently using selenium with Java,And want to implement cucumber to make test script more readable. Currently facing issue while passing argument to java method where Enum is expected as parameter. I would also like to know if there are any other known limitations of cucumber-java before migrating current framework.


Solution

  • The answer is: Yes

    You can use all kind of different types in your scenario: primitive types, own classes (POJOs), enums, ...

    Scenario :

    Feature: Setup Enum and Print value
          In order to manage my Enum
          As a System Admin
          I want to get the Enum
    
          Scenario: Verify Enum Print
          When I supply enum value "GET"
    

    Step definition code :

    import cucumber.api.java.en.When;
    
    public class EnumTest {
    
        @When("^I supply enum value \"([^\"]*)\"$")
        public void i_supply_enum_value(TestEnum arg1) throws Throwable {
            testMyEnum(arg1);
        }
    
        public enum TestEnum {
            GET,
            POST,
            PATCH
        }
    
        protected void testMyEnum(TestEnum testEnumValue) {
    
            switch (testEnumValue) {
                case GET:
                    System.out.println("Enum Value GET");
                    break;
                case POST:
                    System.out.println("Enum Value POST");
                    break;
                default:
                    System.out.println("Enum Value PATCH");
                    break;
            }
    
        }
    
    }
    

    Let me know how you are doing. I could try to help you.