2010-06-24 41 views
0

我有一些我正在測試的XML,它已經將日期和時間設置爲其中的一個元素。每次測試運行時,這顯然都會改變。使用帶有變量值的XMLUnit測試XML

是否有方法可以比較XML並忽略此節點值,或只是使用正則表達式或其他方法進行檢查。

我測試的XML如下:

<xml-fragment> 
    <core:date xmlns:core="http://www.company.com/commerce/common/V1/core">2010-06-24T21:41:22.456+01:00</core:date> 
    <core:serviceName xmlns:core="http://www.company.com/commerce/common/V1/core">calculateNextAndFuturePayments 
    </core:serviceName> 
    <core:ackRequired xmlns:core="http://www.company.com/commerce/common/V1/core">false</core:ackRequired> 
    <v1:viewingCardNumber xmlns:v1="http://www.company.com/commerce/calculateNextAndFuturePayment/V1">405536053 
    </v1:viewingCardNumber> 
</xml-fragment> 

我想檢查初始元素(核心:日期)是日期格式,但是值沒有意義的平等的目的。

感謝

+0

請參閱http://stackoverflow.com/questions/1241593/java-how-do-i-ignore-certain-elements-when-comparing-xml – 2011-05-13 21:34:32

回答

5

所以你生成代碼的XML,而是使用類似new Date()來得到當前的日期/時間?我建議你注入一個時鐘作爲依賴,就像任何其他依賴。這樣,您就可以控制代碼認爲「現在」的時間,並具有可預測的XML進行測試。

注入時鐘已經證明對我的經驗非常有用 - 而且非常容易做到。我建議有一個Clock接口,實現沿着SystemClock和(用於生產)和FakeClock(用於測試)的實現。

無論您是以millis,Date還是(我的偏好)來表達Joda Time中的某些內容,它都是隔離依賴關係的好方法。