【问题标题】:Groovy and XMLUnit: compare webservice resultsGroovy 和 XMLUnit:比较 web 服务结果
【发布时间】:2013-10-07 18:55:08
【问题描述】:

使用 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()

提前谢谢你!

【问题讨论】:

    标签: web-services rest groovy xmlunit


    【解决方案1】:

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

    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 输出表示为字符串,然后进行比较。

    【讨论】:

    • 哦,天哪,我不敢相信它比我想象的还要容易!非常感谢 dmahapatro!
    猜你喜欢
    • 1970-01-01
    • 2020-07-21
    • 2012-06-14
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    相关资源
    最近更新 更多