如何在不使用Cucumber中的轮廓的情况下多次运行相同的场景?

时间:2014-11-13 06:32:00

标签: java cucumber cucumber-jvm

考虑以下黄瓜情景:

Scenario Outline: Execute a template
 Given I have a <template>
 when I execute the template
 Then the result should be successful.
 Examples:
   | template  |
   | templateA |  
   | templateB |  

因此,这将使用表中提到的值在场景大纲之上运行。但是这需要我知道我需要提前执行的所有模板并将它们填入表中。有没有办法动态加载模板列表,然后为每个模板执行方案?

无论何时添加新模板,我都不需要更新功能测试。

由于

1 个答案:

答案 0 :(得分:1)

是的,将模板列表放在步骤定义中,甚至更好地放在应用程序中。然后你可以写

  Scenario: Execute all templates
    When I execute all the templates
    Then there should get no errors

有趣的是你如何实现这一点。类似的东西:

module TemplateStepHelper
  def all_templates
    # either list all the templates here, or better still call a method in 
    # the app to get them
    ...
  end
end
World TemplateStepHelper

When "I execute all the templates" do
  @errors = []
  all_templates.each do |t|
    res = t.execute
    @errors << res unless res
  end
end

Then "there should be no errors" do
  expect(@errors).to be_empty
end

可以修改代码的确切详细信息以满足您的需求。

我建议将代码从步骤defs移到步骤助手中的方法中。

最后,如果您从应用程序中获取模板,则在添加新模板时甚至不必更新功能。