0

使用 Groovy 和 XMLUnit 我正在尝试编写一个脚本来比较来自多个端点的 Web 服务的 xml 输出。试图让它从一个端点工作,然后遍历端点以比较输出,但是,我继续收到以下错误:

Caught: groovy.lang.GroovyRuntimeException: 
Could not find matching constructor for: 
     org.custommonkey.xmlunit.Diff(groovy.util.Node, groovy.util.Node)
groovy.lang.GroovyRuntimeException: 
Could not find matching constructor for: 
     org.custommonkey.xmlunit.Diff(groovy.util.Node, groovy.util.Node)

我很确定这与我对 XmlParser/XmlSlurper 和 XMLUnit(又名新手)缺乏经验有关。我非常感谢任何正确方向的指示。以下是导致异常的示例代码:

@Grab(group='xmlunit', module='xmlunit', version='1.5')
import org.custommonkey.xmlunit.*

def url = "http://www.webservicex.net//geoipservice.asmx/GetGeoIP?IPAddress=173.201.44.188"
def xmlParserResults = new XmlParser().parse("$url")
//same thing happens if I use...
//def xmlSlurperResults = new XmlSlurper().parse("$url")

def xmlDiff = new Diff(xmlParserResults, xmlParserResults)
assert xmlDiff.identical()

先感谢您!

4

1 回答 1

1

url 返回 xml 并Diff接受两个字符串进行比较(在您的情况下,您正在比较节点)。因此,最简单的比较方法是使用URL而不是尝试使用XmlParseror来解析它XmlSlurper

def url = 
"http://www.webservicex.net//geoipservice.asmx/GetGeoIP?IPAddress=173.201.44.188"
def xmlString = new URL(url).text

def xmlDiff = new Diff(xmlString, xmlString)
assert xmlDiff.identical()

如果以上只是一个示例,而不是命中多个端点的工作示例,那么重点是将 xml 输出表示为字符串,然后进行比较。

于 2013-10-07T19:17:02.280 回答