我正在尝试编写黄瓜测试(使用cucumber-jvm)在示例文件上运行groovy脚本并验证数据是否正确存储在数据库中。 (我没有编写groovy脚本,它从命令行运行得很好)。我似乎无法正确地将args放入groovy脚本中。谁能告诉我如何让它发挥作用?
groovy脚本具有以下代码:
/** Check command line options. */
def cli = new CliBuilder(usage: 'groovy scriptname.groovy [-h] -f file')
cli.h(longOpt: 'help', 'Usage information', required: false)
cli.f(longOpt: 'file', 'File with information', args: 1)
OptionAccessor opt = cli.parse(args)
if(!opt) {
return
}
else if(opt.h || !opt.f) {
cli.usage()
return
}
/** Process file. */
def file = new File(opt.f)
我的java代码包含以下内容:
final GroovyShell shell = new GroovyShell();
final Binding binding = new Binding();
final String[] args = {"-f", fileFn};
binding.setVariable("args", args);
final File file = new File(scriptFn);
final Script script = shell.parse(file);
script.run();
从命令行运行时,groovy脚本运行正常。我跑的时候 它来自java / cucumber步骤定义,我得到错误:
groovy.lang.MissingPropertyException: No such property: args for class: FWLoader
at FWLoader.run(FWLoader.groovy:171)
groovy脚本中失败的行是
OptionAccessor opt = cli.parse(args)
有什么建议吗?我是初学者,对java很新(很多年用C / C ++编程)。
答案 0 :(得分:0)
它可能是一个错字,但你错过了script.setBinding(binding)
:
final Script script = shell.parse(file);
script.setBinding(binding); // <-- here
script.run();