2016-03-02 75 views
0

我想寫一個黃瓜測試(使用cucumber-jvm)在示例文件上運行groovy腳本並驗證數據是否正確存儲在數據庫中。 (我沒有編寫groovy腳本,從命令行運行得很好)。我似乎無法正確理解groovy腳本的參數。任何人都可以告訴我如何讓這個工作?無法從java傳遞參數到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代碼包含以下內容:在命令行運行時

​​

Groovy腳本工作得很好。當我運行 它從Java /黃瓜步驟定義,我得到的錯誤:

groovy.lang.MissingPropertyException: No such property: args for class: FWLoader 
at FWLoader.run(FWLoader.groovy:171) 

Groovy腳本中的行失敗是

OptionAccessor opt = cli.parse(args) 

有什麼建議?我對groovy很陌生,對於java來說相當新(很多年在C/C++中編程)。

回答

0

這也許一個錯字,但你缺少一個script.setBinding(binding)

final Script script = shell.parse(file); 
script.setBinding(binding); // <-- here 
script.run(); 
+0

是誰幹的,我已經在這個問題上google搜索了很多,種種原因錯過了這一要求。 –