2016-09-21 107 views
-1

我收到以下錯誤日誌時,我試圖使用Groovy與後續的代碼做參數:數據從Excel驅動測試在soapUI的免費版本使用Groovy腳本

package org.codehaus.groovy.antlr.parser; 
import java.io.*; 
import jxl.*; 
import org.codehaus.groovy.antlr.parser.GroovyRecognizer; 

Workbook workbook = Workbook.getWorkbook(new File("D:\\SOAPUI\\ConversionRate.xls") 
Sheet sheet1 = workbook.getSheet("DataDriven"); 
row = sheet1.getRow(); col = sheet1.getColumns(); 
log.info "Row Count =" +row 
log.info "Column Count =" +col 
for(i=1;i<row;i++) { 
    for(j=0;;j<col;j++) { 
     def celsius = testRunner.tetCase.getStepByName("Properties") 
     cell var = sheet1.getCell(i,j) 
     log.info var.getContents() 
    } 
} 

注:我已經把所有的jar和jxl在bin/ext文件夾中。

org.codehaus.groovy.control.MultipleCompilationErrorsException: 
startup failed: Script7.groovy: 1: unable to resolve class com.company.ui.test.SoapUI_T11001_StockConsSecurityCurBusiDate @ line 1, column  
          ^
org.codehaus.groovy.syntax.SyntaxException: unable to resolve class com.company.ui.test.SoapUI_T11001_StockConsSecurityCurBusiDate @ line 1, column 1. 
at org.codehaus.groovy.ast.ClassCodeVisitorSupport.addError(ClassCodeVisitorSupport.java:148) 
at org.codehaus.groovy.control.ResolveVisitor.visitClass(ResolveVisitor.java:1206) 
at org.codehaus.groovy.control.ResolveVisitor.startResolving(ResolveVisitor.java:148) 
at org.codehaus.groovy.control.CompilationUnit$6.call(CompilationUnit.java:585) 
at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:832) 
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:519) 
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:495) 
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:472) 
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:292) 
at groovy.lang.GroovyShell.parseClass(GroovyShell.java:727) 
at groovy.lang.GroovyShell.parse(GroovyShell.ja`enter code here`va:739) 
at groovy.lang.GroovyShell.parse(GroovyShell.java:766) 
at groovy.lang.GroovyShell.parse(GroovyShell.java:757) 
at com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.compile(SoapUIGroovyScriptEngine.java:141) 
at com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.run(SoapUIGroovyScriptEngine.java:90) 
at com.eviware.soapui.impl.wsdl.teststeps.WsdlGroovyScriptTestStep.run(WsdlGroovyScriptTestStep.java:148) 
at com.eviware.soapui.impl.wsdl.panels.teststeps.GroovyScriptStepDesktopPanel$RunAction$1.run(GroovyScriptStepDesktopPanel.java:274) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
at java.lang.Thread.run(Thread.java:619) 
1 error 
+1

似乎一個自定義類(不是jxl)相關的是缺少'com.company.ui.test ...'。你可以添加它拋出這個異常的Groovy代碼嗎? – albciff

+0

我將代碼添加到您的問題中,下次嘗試編輯您的問題而不是將它粘貼到註釋':)'中。 – albciff

+0

一些評論:)。在Groovy testStep腳本中,不要添加包信息;爲什麼要添加'package org.codehaus.groovy.antlr.parser; '這裏肯定這不是必要的。在groovy腳本中,我沒有看到你在哪裏使用導致錯誤原因的類「com.company.ui.test.SoapUI_T11001_StockConsSecurityCurBusiDate」。 – albciff

回答

1

的Groovy步步測試,不具備自動完成功能,所以有時它是一個有點疼痛處理類的方法和其他錯別字......這就是爲什麼你可能無法使你的代碼工作。因此,讓我們去,我會嘗試枚舉錯誤:

  • 在SOAPUI Groovy中一步步測試package其沒有必要... 而且這個人是肯定不正確的,你的情況: package org.codehaus.groovy.antlr.parser;
  • 有沒有必需品import在你的代碼:

    // groovy add java.io.* by default 
    import java.io.* 
    // this is not used in your code 
    import org.codehaus.groovy.antlr.parser.GroovyRecognizer 
    
  • 也有一些錯別字;在第一行)缺失關閉getWorkbook(;您沒有爲rowcol變量定義任何類型;您的循環中還有一個額外的;for(j=0;;j<cols;j++)

  • 要取得jxl的行和列的總數,請改爲使用Sheet.getColumns()Sheet.getRows()
  • jxl.Cell類開始與上殼體(Java convention for class name is CamelCase
  • Sheet.getCell(int column, int row)期望column位置作爲第一個參數,如row第二不是相反。

所以,你的代碼修正可能是:

import jxl.* 

Workbook workbook = Workbook.getWorkbook(new File("D:/SOAPUI/ConversionRate.xls")) 
Sheet sheet1 = workbook.getSheet("DataDriven") 
def rows = sheet1.getRows() 
def cols = sheet1.getColumns() 
log.info "Row Count =" + rows 
log.info "Column Count =" + cols 
for(i=1;i<rows;i++) { 
    for(j=0;j<cols;j++) { 
     Cell cell = sheet1.getCell(j,i) 
     log.info cell.getContents() 
    } 
} 

請注意,我沒有測試,但我想,一旦被修正必須的作品,勇往直前的嘗試。

+0

嗨...我試着用你正確的代碼..仍然得到錯誤日誌 –

+0

org.codehaus.groovy.control.MultipleCompilationErrorsException:啓動失敗:Script8.groovy:13:無法解決類Workbook @ line 13,18。Workbook workbook = Workbook.getWorkbook(new File(「D:\\ SOAPUI \\ ConversionRate.xls」))^ org.codehaus.groovy.syntax.SyntaxException:無法解決class Workbook @ line 13,第18欄。在org.codehaus.groovy.ast.ClassCodeVisitorSupport.addError(ClassCodeVisitorSupport.java:146) –

+0

@AlaguPandi很難幫助那些不瞭解正在做什麼的人。 'jxl.Workbook'類存在,所以如果你在* SOAPUI \ bin \ ext中添加jar *這個類必須是可用的。此外,您的錯誤顯示了第13行中的問題......當代碼片段中的「Workbook」在第3行時,這怎麼可能?你沒有執行你正在執行的答案片段,不是嗎? – albciff