3

I'm able to run testng scripts upon integrating with cucumber. I've followed the exact steps defined in http://automatictester.co.uk/2015/06/11/basic-cucumberjvm-selenium-webdriver-test-automation-framework/ link.

Now I’ve one more requirement. can you explain me how to read values from parameters tag of testng.xml. See below example:

<test name="ascentis.LoginDemo.Firefox">
    <parameter name="BrowserName" value="Firefox" />
    <parameter name="Environment" value="local" />  
    <packages>
        <package name="runnerFiles.*"/>
    </packages>
</test>

I’ve to read BrowserName and Environment values from parameters tag. I’ve tried to use @parameters for @Before method of cucumber but it didn’t work out and gave exception that @Before hook only accepts one parameter that too of type scenario. can you explain me how to read values from parameters tag to access in stepDefinations of cucumber.

Vikas
  • 669
  • 3
  • 10
  • 21

1 Answers1

6

Well, I'm not sure if parametrisation of CucumberJVM tests on testng.xml level is what you are really looking for. However, if you really need to read parameters from testng.xml file in your CucumberJVM framework, here is a (dirty) solution for you:

  • make DownloadFeatureRunner extend CustomRunner instead of AbstractTestNGCucumberTests
  • include parameter in yout testng.xml file: <parameter name="someParam" value="someValue"/>
  • and also implement you new parent class:

    public class CustomRunner implements IHookable {
        public CustomRunner() {
        }
    
        @Parameters("someParam")
        @Test(
                groups = {"cucumber"},
                description = "Runs Cucumber Features"
        )
        public void run_cukes(String someParam) throws IOException {
    
            System.out.println(someParam);
            (new TestNGCucumberRunner(this.getClass())).runCukes();
        }
    
        public void run(IHookCallBack iHookCallBack, ITestResult iTestResult) {
            iHookCallBack.runTestMethod(iTestResult);
        }
    
    }
    

As you can see, you can access value of the parameter. It's up to you what you want to do with it now.

automatictester
  • 2,436
  • 1
  • 19
  • 34
  • 1
    Without any other doc available on how to pass TestNG parameters to Cucumber-JVM, this is what I was looking for! – Jai Feb 13 '16 at 22:29