2017-08-04 39 views
0

我有三個類 - ConvertToXMLElement,ConvertToClass,SerialisableClass在單元測試中驗證xml結果?

ConvertToXMLElement具有這樣的功能,其發生在SerialisableClass的一個實例,並返回表示類值的的XmlElement,ConvertToClass具有這樣的功能,其需要在一個的XmlElement並返回一個SerialisableClass。

我想寫一個單元測試,驗證從ConvertToXMLElement返回的XmlElement,以確保XmlElement可以通過ConvertToClass轉換爲正確的類。

現在我可以想象做到這一點的唯一方法是讓ConvertToClass嘗試將XmlElement轉換爲類。

但是這意味着單元測試中兩個類之間存在依賴關係,理想情況下單元測試在驗證此類函數時不必關心其他類。

+0

你必須僞造你依賴的類來返回你需要的結果。這樣,您可以測試您的「XmlElement」類,而無需實際運行ConvertToClass中的代碼。 –

+0

什麼應用程序將使用您生成的XML文件?如果您可以使用消費應用程序使用的slurper-parser編寫測試,那將是理想的選擇。另一種選擇是序列化固定數據並將結果與​​固定的已知良好的XML文件進行比較。顯然需要更多的維護......最後,不要害怕序列化,然後使用你的類進行反序列化。它是一個好主意......只要你有其他測試來支持對稱測試。 –

回答

1

隔離是在單元測試的標準,但在測試序列化/反序列化一起是不完全不能接受的,IMO。

這取決於誰將使用序列化數據。如果它僅用於兩個類中,那麼一起測試它們是一個相對安全的捷徑。

OTOH,如果數據必須是某種特殊的格式才能被其他程序使用,那麼你絕對需要分別測試兩個階段。這意味着您將實際檢查序列化XML以確定它是否符合外部要求,並且您將創建XML以用於符合相同標準的測試。

當然,即使不是嚴格必要的,也可以將兩者分開,但這通常是更多的工作。