如何在java中获取场景名称?

如何在java中获取场景名称?,java,cucumber,cucumber-jvm,Java,Cucumber,Cucumber Jvm,我希望获得场景的名称,以便在运行时使用java生成有意义的日志和自定义报告。Scenario类只有getStatus()和getSourceTagNames()方法。我找不到一种方法来获取场景名称 有人能帮我解决这个问题吗?从1.6版开始,除了getStatus()和getSourceTagNames(),还有另一个方法,getName()返回场景描述。 例如,对于以下场景: Scenario: verify number of topics shown in the UI @Before p

我希望获得场景的名称,以便在运行时使用java生成有意义的日志和自定义报告。Scenario类只有getStatus()和getSourceTagNames()方法。我找不到一种方法来获取场景名称


有人能帮我解决这个问题吗?

从1.6版开始,除了
getStatus()
getSourceTagNames()
,还有另一个方法,
getName()
返回场景描述。 例如,对于以下场景:

Scenario: verify number of topics shown in the UI
@Before
public void before(Scenario scenario) {
    this.scenario = scenario;
}
scenario.getName()
返回
“验证UI中显示的主题数”

我在@Before中初始化场景,如下所示:

Scenario: verify number of topics shown in the UI
@Before
public void before(Scenario scenario) {
    this.scenario = scenario;
}
希望这有帮助

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);

一旦设置了@Before,请尝试此操作以检索Cucumber功能和方案项。

在步骤定义中,您可以使用
CucumberHelper.Scenario.getName()


基于此API,您可以使用
getID
getSourceTagNames
getStatus
getClass
方法。

以下是所问问题的完整代码,以节省您的时间:

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());
    }

谢谢。实际上我忘了提到我正在使用的cucumber版本。我试着用1.5版。使用1.6进行了尝试,它成功了。Cucumber是否有类似于step.getName()的功能?获取当前正在执行的步骤的名称。当使用场景Oulines时,名称将不唯一。这是否也适用于功能,或仅适用于场景?您忘记在步骤定义文件中提到\@之前挂钩,而不是指定\@RunWith(Cucumber.class)的运行程序和\@黄瓜选项注释。听起来是个好主意。但是,CucumberHelper是在哪里定义的?您可以创建一个helper类并导入
cucumber.api.Scenario
并在类内将场景声明为静态,以使其可用<代码>公共静态场景