如何在java中获取场景名称?
我希望获得场景的名称,以便在运行时使用java生成有意义的日志和自定义报告。Scenario类只有getStatus()和getSourceTagNames()方法。我找不到一种方法来获取场景名称如何在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
有人能帮我解决这个问题吗?从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
并在类内将场景声明为静态,以使其可用<代码>公共静态场景代码>