将System.out.println替换为groovy soapui类外的变量

将System.out.println替换为groovy soapui类外的变量,groovy,soapui,Groovy,Soapui,我有下面来自git的代码,它在eclipse中100%工作。它在控制台上将excel文件转换成Xml格式。当我将其复制/粘贴到SOAPUIGroovy脚本并点击play时,我没有看到任何事情发生。我尝试用log.info替换println,但没有效果,因此我尝试将xml返回到变量中,但我不知道如何执行此操作,因为它看起来需要在类-->之外发生,我不清楚如何将信息从main获取到testCase属性。我还尝试使用testRunner变量从main和class内部作为getter和setter,但是

我有下面来自git的代码,它在eclipse中100%工作。它在控制台上将excel文件转换成Xml格式。当我将其复制/粘贴到SOAPUIGroovy脚本并点击play时,我没有看到任何事情发生。我尝试用
log.info
替换
println
,但没有效果,因此我尝试将xml返回到变量中,但我不知道如何执行此操作,因为它看起来需要在类-->之外发生,我不清楚如何将信息从
main
获取到testCase属性。我还尝试使用
testRunner
变量从
main
class
内部作为getter和setter,但是…错误、错误和更多错误lol

谢谢你的反馈

import org.apache.poi.ss.usermodel.*
import org.apache.poi.hssf.usermodel.*
import org.apache.poi.xssf.usermodel.*
import org.apache.poi.ss.util.*
import org.apache.poi.ss.usermodel.*
import java.io.*



class GroovyExcelParser {
  //http://poi.apache.org/spreadsheet/quick-guide.html#Iterator

  def parse(path) {
    InputStream inp = new FileInputStream(path)
    Workbook wb = WorkbookFactory.create(inp);

    Sheet sheet = wb.getSheetAt(0);

    Iterator<Row> rowIt = sheet.rowIterator()
    Row row = rowIt.next()
    def headers = getRowData(row)

    def rows = []
    while(rowIt.hasNext()) {
      row = rowIt.next()
      rows << getRowData(row)
    }
    [headers, rows]
  }

  def getRowData(Row row) {
    def data = []
    for (Cell cell : row) {
      getValue(row, cell, data)
    }
    data
  }

  def getRowReference(Row row, Cell cell) {
    def rowIndex = row.getRowNum()
    def colIndex = cell.getColumnIndex()
    CellReference ref = new CellReference(rowIndex, colIndex)
    ref.getRichStringCellValue().getString()
  }

  def getValue(Row row, Cell cell, List data) {
    def rowIndex = row.getRowNum()
    def colIndex = cell.getColumnIndex()
    def value = ""
    switch (cell.getCellType()) {
      case Cell.CELL_TYPE_STRING:
        value = cell.getRichStringCellValue().getString();
        break;
      case Cell.CELL_TYPE_NUMERIC:
        if (DateUtil.isCellDateFormatted(cell)) {
            value = cell.getDateCellValue();
        } else {
            value = cell.getNumericCellValue().toInteger();
        }
        break;
      case Cell.CELL_TYPE_BOOLEAN:
        value = cell.getBooleanCellValue();
        break;
      case Cell.CELL_TYPE_FORMULA:
        value = cell.getCellFormula();
        break;
      default:
        value = ""
    }
    data[colIndex] = value
    data
  }

  def toXml(header, row) {
    def obj = "<object>\n"
    row.eachWithIndex { datum, i ->
      def headerName = header[i]
      obj += "\t<$headerName>$datum</$headerName>\n"
    }
    obj += "</object>"
  }

  public static void main(String[]args) {

    def filename = 'RaNdOmxlsxFile.xslx'

    GroovyExcelParser parser = new GroovyExcelParser()

    def (headers, rows) = parser.parse(filename)
    System.out.println 'Headers'
    System.out.println '------------------'
    headers.each { header ->
      System.out.println header
    }
    System.out.println "\n"
    System.out.println 'Rows'
    System.out.println '------------------'
    rows.each { row ->
      System.out.println parser.toXml(headers, row)
    }
  }
}
import org.apache.poi.ss.usermodel*
导入org.apache.poi.hssf.usermodel*
导入org.apache.poi.xssf.usermodel*
导入org.apache.poi.ss.util*
导入org.apache.poi.ss.usermodel*
导入java.io*
类GroovyExcelParser{
//http://poi.apache.org/spreadsheet/quick-guide.html#Iterator
def解析(路径){
InputStream Input=新文件InputStream(路径)
工作簿wb=WorkbookFactory.create(inp);
Sheet Sheet=wb.getSheetAt(0);
迭代器rowIt=sheet.rowIterator()
Row=rowIt.next()
def headers=getRowData(行)
def行=[]
while(rowIt.hasNext()){
row=rowIt.next()
排
def headerName=标题[i]
obj+=“\t$datum\n”
}
obj+=“”
}
公共静态void main(字符串[]args){
def filename='RaNdOmxlsxFile.xslx'
GroovyExcelParser parser=新的GroovyExcelParser()
def(头,行)=parser.parse(文件名)
System.out.println“头”
System.out.println'----------------------'
headers.each{header->
System.out.println头文件
}
System.out.println“\n”
System.out.println“行”
System.out.println'----------------------'
rows.each{row->
System.out.println parser.toXml(标题,行)
}
}
}

基本上可以通过多种方式实现相同的效果:

  • 您应该能够在soapui的日志文件中看到它
  • 否则,打开命令提示符->转到SOAPUI_HOME/bin,运行SOAPUI.bat/.sh文件并运行groovy脚本,您应该能够在命令窗口控制台中看到输出
  • 从main方法复制代码并将其放在类的一侧,然后用
    log.info
    替换
    System.out.println()
    ,并从类中删除main方法。然后运行groovy脚本
  • 希望您只想查看输出文本。

    Rao,谢谢:)我尝试了#3,现在它正按照我需要的方式工作:)