public void IgnoreElement()
        {
            "加上忽略的元素列表,可以忽略此元素的不同,没有抛出不匹配异常".Test(() =>
            {
                var xmlString1 = @"<Foo>
<Id>123123</Id>
<F2>1.123</F2>
<F2>2.123</F2>
<F2>3.123</F2>
<F2>4.123</F2>
<F2>5.123</F2>
<F2>6.123</F2>
</Foo>";
                var xDocument1 = XDocument.Parse(xmlString1);
                var xmlString2 = @"<Foo>
<Id>123</Id>
<F2>1.123</F2>
<F2>2.123</F2>
<F2>3.123</F2>
<F2>4.123</F2>
<F2>5.123</F2>
<F2>6.123</F2>
</Foo>";
                var xDocument2 = XDocument.Parse(xmlString2);

                XmlComparer.VerifyXmlEquals(xDocument1, xDocument2, new XmlComparerSettings()
                {
                    IgnoreElementNameList = new[] { "Id" }
                });
            });
        }
        public void VerifyXmlEquals()
        {
            "传入列表元素数量不同的 XML 内容,抛出异常".Test(() =>
            {
                var xmlString1 = @"<Foo>
<F2>1.123</F2>
<F2>2.123</F2>
<F2>3.123</F2>
<F2>4.123</F2>
<F2>5.123</F2>
<F2>6.123</F2>
</Foo>";
                var xDocument1 = XDocument.Parse(xmlString1);
                var xmlString2 = @"<Foo>
<F2>1.123</F2>
<F2>2.123</F2>
<F2>3.123</F2>
<F2>4.123</F2>
<F2>5.123</F2>
</Foo>";
                var xDocument2 = XDocument.Parse(xmlString2);

                Assert.ThrowsException <ElementNotMatchException>(() =>
                {
                    XmlComparer.VerifyXmlEquals(xDocument1, xDocument2);
                });
            });

            "传入有相同列表元素的 XML 内容,没有抛出不匹配异常".Test(() =>
            {
                var xmlString = @"<Foo>
<F2>1.123</F2>
<F2>2.123</F2>
<F2>3.123</F2>
<F2>4.123</F2>
<F2>5.123</F2>
<F2>6.123</F2>
</Foo>";

                var xmlString1 = xmlString;
                var xDocument1 = XDocument.Parse(xmlString1);
                var xmlString2 = xmlString;
                var xDocument2 = XDocument.Parse(xmlString2);

                XmlComparer.VerifyXmlEquals(xDocument1, xDocument2);
            });

            "传入一个嵌套两层和一个嵌套一层的 XML 内容,抛出异常".Test(() =>
            {
                var xmlString1 = @"<Foo><F2>1.123</F2></Foo>";
                var xDocument1 = XDocument.Parse(xmlString1);
                var xmlString2 = @"<Foo>1.12301</Foo>";
                var xDocument2 = XDocument.Parse(xmlString2);

                Assert.ThrowsException <ElementNotMatchException>(() =>
                {
                    XmlComparer.VerifyXmlEquals(xDocument1, xDocument2);
                });
            });

            "传入嵌套多层的两个相同的 XML 内容,没有抛出不匹配异常".Test(() =>
            {
                var xmlString  = @"<Foo><F2>1.123</F2></Foo>";
                var xmlString1 = xmlString;
                var xDocument1 = XDocument.Parse(xmlString1);
                var xmlString2 = xmlString;
                var xDocument2 = XDocument.Parse(xmlString2);

                XmlComparer.VerifyXmlEquals(xDocument1, xDocument2);
            });

            "传入浮点值,存在精度误差,没有抛出不匹配异常".Test(() =>
            {
                var xmlString1 = @"<Foo>1.123</Foo>";
                var xDocument1 = XDocument.Parse(xmlString1);
                var xmlString2 = @"<Foo>1.12301</Foo>";
                var xDocument2 = XDocument.Parse(xmlString2);

                XmlComparer.VerifyXmlEquals(xDocument1, xDocument2);
            });

            "传入值不相同的XML内容,抛出异常".Test(() =>
            {
                var xmlString1 = @"<Foo>Foo</Foo>";
                var xDocument1 = XDocument.Parse(xmlString1);
                var xmlString2 = @"<Foo>F1</Foo>";
                var xDocument2 = XDocument.Parse(xmlString2);

                Assert.ThrowsException <ElementNotMatchException>(() =>
                {
                    XmlComparer.VerifyXmlEquals(xDocument1, xDocument2);
                });
            });

            "传入两个完全相同的XML内容,没有抛出不匹配异常".Test(() =>
            {
                var xmlString  = @"<Foo>Foo</Foo>";
                var xDocument1 = XDocument.Parse(xmlString);
                var xDocument2 = XDocument.Parse(xmlString);

                XmlComparer.VerifyXmlEquals(xDocument1, xDocument2);
            });
        }