2013-10-07 65 views
0

使用Groovy和XMLUnit我想編寫一個腳本來比較來自多個端點的Web服務的xml輸出。試圖把它從一個端點工作,然後遍歷端點比較輸出,但是,我繼續得到以下錯誤:Groovy和XMLUnit:比較web服務結果

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

提前致謝!

回答

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輸出作爲字符串,然後進行比較。

+1

哦,我的話我不能相信它比我想象的更容易!非常感謝dmahapatro! – nomadcanuck