簡體   English   中英

單元測試:創建復雜的XDocument以測試xml閱讀器

[英]Unit Testing: Creating complex XDocument for testing an xml reader

我有兩個類XmlWriter和XmlReader,它們在內部使用XDocument來存儲/讀取雙精度,字符串和數組之類的簡單值。

XmlWriter類基本上看起來像這樣

class XmlWriter
{
    internal XDocument document;

    Set(string name, double value);
    Set(string name, Int32 value);

    …
    SaveToFile(string filename);
}

現在,如果我想為Set(string,double)方法創建一個UnitTest,我可以輕松地使用document字段來檢查是否已使用XPath添加了正確的元素。

xmlWriter.Set("something," 123);

var myAddedElement = xmlWriter.document.XPathSelectElement(…);
Assert.AreEqual(myAddedElement.Value, 123);

此方法對於XmlWriter效果很好。 但是,XmlReader很難測試。 據我所知,我有兩個選擇:

首先,我可以使用XmlWriter為XmlReader的單元測試設置XDocument。

//Quick and dirty to give you an idea
writer.Set("something", 123);
reader.document = writer.document;
Assert.AreEqual(123, reader.Get("something");

我真的不是很喜歡,因為現在XmlReader的UnitTests嚴重依賴於XmlWriter類。 如果我中斷XmlWriter類,則XmlReader的單元測試也肯定會失敗。

我想到的另一個選擇是手動創建XDocument,這將變得非常乏味,尤其是在XmlStructure更復雜的情況下。

您對此事有何看法?

提前致謝。

我看不到您的實現,但是IMO您的類看起來像XDocument包裝器,因此您的單元測試需要測試您的類在XDocument上調用了預期的方法。 我將模擬XDocument並驗證是否為Set,Get,Save調用了您期望的方法。 否則,您將最終嘗試對各種XML可能性進行單元測試,而XDocument已經處理了該工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM