我是groovy脚本的新手,我的任务是比较从2个端点收到的XML响应。响应内容将保持不变,但标签,命名空间前缀的顺序可能会有所不同。我已经研究和提取了groovy脚本语句,并将脚本框如下。
import java.io.File`;
import java.util.Date;
import jxl.*;
import org.custommonkey.xmlunit.*
import groovy.xml.*
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def xml1 = new XmlSlurper().parseText( new File("D:\\GroovyTest\\responses\\getCustDetA.xml_Response.xml").getText())
def xml2 = new XmlSlurper().parseText( new File("D:\\GroovyTest\\responses\\getCustDetB.xml_Response.xml").getText() )
XMLUnit.setIgnoreWhitespace(true)
XMLUnit.setIgnoreComments(true)
XMLUnit.setIgnoreDiffBetweenTextAndCDATA(true)
XMLUnit.setNormalizeWhitespace(true)
def xmlDiff = new Diff(xml1,xml2)
assert xmldiff.identical()
当我运行脚本运行时,异常发生如下所示。请帮助解决此问题或建议以更好的方式编写它。
groovy.lang.GroovyRuntimeException: Could not find matching constructor
for: org.custommonkey.xmlunit.Diff(groovy.util.slurpersupport.NodeChild,
groovy.util.slurpersupport.NodeChild) error at line: 13
答案 0 :(得分:1)
Diff不会将Groovy Slurper的NodeChild类作为构造函数参数(如异常中所述)
作为JavaDoc for the class shows,您可以使用字符串,即:
String xml1 = new File("D:\GroovyTest\responses\getCustDetA.xml_Response.xml").text
String xml2 = new File("D:\\GroovyTest\\responses\\getCustDetB.xml_Response.xml").text
def xmlDiff = new Diff(xml1,xml2)