user2365105
user2365105

Reputation: 335

How to get name of scenario in cucumber java?

I would like to get name of scenario to have meaningful logs and to generate custom report at run-time in java. Scenario class have only has getStatus() and getSourceTagNames() methods. I don't find a way to get scenario name.

Can someone help me to get this resolved ?

Upvotes: 31

Views: 62221

Answers (4)

Arun
Arun

Reputation: 19

Below is the entire code for the problem asked, to save your time:

import io.cucumber.java.Before;
import io.cucumber.java.Scenario;
Scenario scenario;

   @Before
    public void before(Scenario scenario) {
        this.scenario = scenario;
    }

    @Given("I test scenario name")
    public void test() {
        System.out.println(scenario.getName());
    }

Upvotes: 1

Philipos D.
Philipos D.

Reputation: 2310

Inside the step definition, you can use CucumberHelper.scenario.getName().

Based on this API you can use getID, getSourceTagNames, getStatus and getClass methods.

Upvotes: 0

Sridevi Yedidha
Sridevi Yedidha

Reputation: 1203

From version 1.6, in addition to, getStatus() and getSourceTagNames(), there is another method, getName() that returns the scenario's description. For example, for a scenario as follows:

Scenario: verify number of topics shown in the UI

scenario.getName() returns "verify number of topics shown in the UI"

I initialize scenario in @Before as follows:

@Before
public void before(Scenario scenario) {
    this.scenario = scenario;
}

Hope this helps.

Upvotes: 40

Jrf
Jrf

Reputation: 31

String scenarioName = scenario.getName();
String[] arrayScenarioName = scenarioName.split("--");
String scenarioName1 = arrayScenarioName[0]; 
String scenarioName2 = arrayScenarioName[1]; 
System.out.println("Scenario Name 1 for this test is -> " + scenarioName1);
System.out.println("Scenario Name 2 for this test is -> " + scenarioName2);

String scenarioId = scenario.getId();
//Takes the Scenario ID and removes the ; and splits it into 2 strings
String scenarioId4 = scenarioId;
String[] parts = scenarioId4.split(";");
String part1 = parts[0]; 
String part2 = parts[1]; 
String part11 = part1.replace('-', ' ');
String part22 = part2.replace('-', ' ');
System.out.println("Scenario ID for this test is -> part11 " + part11);
System.out.println("Scenario ID for this test is -> part22 " + part22);

Once you have the @Before set up them try this to retrieve your Cucumber Feature and Scenario items.

Upvotes: 1

Related Questions