我想在Ruby代码中执行Cucumber功能。
通常,与gem一起安装的cucumber
二进制文件在命令行上执行,并指定一个或多个功能。
但是,我想定义创建动态功能执行流程的逻辑。换句话说,程序可以确定应该执行哪些功能。
是否可以使用Ruby代码中的指定功能文件来实例化Cucumber而不是命令行?
答案 0 :(得分: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)
如果您希望执行gem features/
目录中的所有功能,请将空数组传递给Main.new
。
答案 1 :(得分: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进行测试