10

我想从 Ruby 代码中执行 Cucumber 功能。

通常,cucumber与 gem 一起安装的二进制文件在命令行上执行,并指定一个或多个特性。

但是,我想定义创建动态功能执行流程的逻辑。换句话说,程序可以计算出应该执行哪些功能。

是否可以使用 Ruby 代码中的指定功能文件而不是命令行来实例化 Cucumber?

4

2 回答 2

11

我从邮件列表和一些 API 阅读中发现了如何。

features="path/to/first.feature path/to/second.feature"
runtime = Cucumber::Runtime.new 
runtime.load_programming_language('rb') 
Cucumber::Cli::Main.new([features]).execute!(runtime)

如果您希望features/执行 gem 目录中的所有功能,请改为传递一个空数组Main.new

于 2012-12-13T17:18:02.637 回答
3

要转换此示例命令,并指定功能和选项:

cucumber features/first.feature features/second.feature -d -f Cucumber::Formatter::Custom

到 Ruby 代码中,它归结为传递 Cucumber 一个args数组:

require 'cucumber'

# Method 1 - hardcoded features
args = %w(features/first.feature features/second.feature -d -f Cucumber::Formatter::Custom)

# Method 2 - dynamic features
features = 'features/first.feature features/second.feature'
args = features.split.concat %w(-d -f Cucumber::Formatter::Custom)

# Run cucumber
begin
  Cucumber::Cli::Main.new(args).execute!
rescue SystemExit
  puts "Cucumber calls @kernel.exit(), killing your script unless you rescue"
end

使用 Ruby 2.0.0p598 和 Cucumber 1.3.17 测试

于 2015-06-04T19:43:50.557 回答