2013-08-19 57 views
1

这感觉很愚蠢,但是这个代码有什么问题?我对循环运行,直到55for循环超出比较限制

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context) 
def holder = groovyUtils.getXmlHolder("StepName#ResponseAsXml") 

def cnt = holder["count(//Results/ResultSet/Row)"] 
log.info "Row count is: " + cnt 

for(int i = 1; i<=cnt; i++){ 
    x = x + 1 
} 

log.info "Loop ran for: " + x 

的输出如下:

周一8月19日12时38分04秒ADT 2013:信息:行数:7

周一8月19日12: 38:04 ADT 2013:信息:循环跑:56

编辑... 让我们尝试不同的东西,忘记了变量x,只是打印一行是这样的:

for(int i = 0; i<cnt; i++){ 
    log.info "At row: " + i.toString() 
} 

我得到以下输出:

Mon Aug 19 12:57:41 ADT 2013:INFO:Row count: 7 
Mon Aug 19 12:51:03 ADT 2013:INFO:At row: 0 
Mon Aug 19 12:51:03 ADT 2013:INFO:At row: 1 
Mon Aug 19 12:51:03 ADT 2013:INFO:At row: 2 
Mon Aug 19 12:51:03 ADT 2013:INFO:At row: 3 
. 
. 
. 
. 
Mon Aug 19 12:51:03 ADT 2013:INFO:At row: 54 
+0

你怎么初始化'x'什么? –

+0

编辑之后:有什么问题?你有55件事情,所以你做'0','1','...','54'。这是55件事...... –

+1

你也可以替换'log.info“在行:”+ i.toString()'与'log.info“在行$ i”'(并保存自己的一些输入);-) –

回答

10

cnt变量的类型为字符串( “7”)的。 “7”的ASCII数值是55,所以这就是为什么你的循环计数到54

尝试以下操作:

for(int i = 0; i<(cnt as int); i++){ 
    println "At row: " + i.toString() 
} 
+0

Doh!好点:-(我要坐在愚蠢的椅子上:-( –

+0

)日志语句不应该影响变量的类型,看起来像com.eviware.soapui.support.XmlHolder#get(Object)返回一个对象,你可以在赋值变量之后添加一个cnt.getClass()。getName()日志打印,以查看XmlHolder返回的内容。 –