我想从 Ruby 代码中执行 Cucumber 功能。
通常,cucumber
与 gem 一起安装的二进制文件在命令行上执行,并指定一个或多个特性。
但是,我想定义创建动态功能执行流程的逻辑。换句话说,程序可以计算出应该执行哪些功能。
是否可以使用 Ruby 代码中的指定功能文件而不是命令行来实例化 Cucumber?
我从邮件列表和一些 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
。
要转换此示例命令,并指定功能和选项:
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 测试