java - 如何在钩子(Hook)之前获取所有 cucumber 场景步骤?

标签 java cucumber cucumber-jvm serenity-bdd cucumber-serenity

我想访问 @before 中的所有 cucumber 场景步骤钩。有办法做到这一点吗?

我尝试在 before hook 方法中传递 cucumber 场景对象,但它只提供基本信息,如 scenario.getName() , scenario.getId() 。我需要的是类似 getSteps()这给了我 List<String>该特定场景的所有步骤。

我正在寻找的是这样的东西

    @Before("@dev")
public void testcase(Scenario scenario){

    for (Step a : scenario.getSteps()) {
        System.out.println("scenario step = " + a.getText());
    }
}

基本上我想要在测试执行开始时获得完整的场景信息。

如果我在 before 方法中传递类 cucumber.api.TestCase 的参数,那么我可以访问 getTestSteps()方法,但这会导致以下异常。

cucumber.runtime.CucumberException: When a hook declares an argument it must be of type cucumber.api.Scenario. public void com.thermofisher.bid.spa.kingfisher.ui.steps.Hooks.poc(cucumber.api.TestCase)

最佳答案

尝试这样的事情:

@Before
public void setUp(Scenario scenario) throws Exception{

    tags = (ArrayList<String>) scenario.getSourceTagNames();
    System.out.println("At Hooks: " + scenario.getId());
    Iterator ite = tags.iterator();

    while (ite.hasNext()) {

        String buffer = ite.next().toString();
        if (buffer.startsWith("<tagOfATestCase>")) {

            Field f = scenario.getClass().getDeclaredField("testCase");
            f.setAccessible(true);
            TestCase r = (TestCase) f.get(scenario);

            List<PickleStepTestStep> testSteps = r.getTestSteps().stream().filter(x -> x instanceof PickleStepTestStep)
                    .map(x -> (PickleStepTestStep) x).collect(Collectors.toList());

            for (PickleStepTestStep ts : testSteps) {

                System.out.println(ts.getStepText());//will print your test case steps

            }

        }

    }

关于java - 如何在钩子(Hook)之前获取所有 cucumber 场景步骤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56296348/

相关文章:

java - Cucumber+TestNG+Cucable插件: How can I pass the appium driver instance that I create in the @beforemethod instance to the page objects?

java - 通过java将文件路径保存到mysql

java - 类型转换为更具体的类型

java - 如何勾选 "choose paper source by pdf page size"iText7?

ruby-on-rails - 为什么 cucumber 场景只有在我运行完整的测试套件后才会失败?

ruby-on-rails - 我的正则表达式在 Cucumber 中无法识别——求助!

java - 如何链接 cucumber 中的特征和步骤定义

java - 触摸时,日期选择器会出现两次

ruby - 带 Selenium 的 capybara ,send_key 不起作用

java - FEST:启动/停止使用 System.exit() 而不影响 VM 的外部 SWING 程序