What is NXUnit?
NXUnit is a NUnit -style unit testing framework about XML for .NET Framework. It is an extension to NUnit. It brings you the ability to do unit testing easily in XML applications. It helps you to concentrate on business logic of your XML application and improve your Test Driven Development(TDD) technics. You can directly compare one XML string or stream with another, er assert that they are equal, just like doing the same thing to two integers using xUnit. But without NXUnit, you must pay attention to whitespaces in XML strings, empty elements or attributes, unimportant order of elements or attributes, unneccessary comments and so on. It's similar with XmlUnit in some aspects.
Features
The current version is NXUnit 1.0rc1, July 2005. The following is the 8 features of this version, which you can find in the facade class XMLAssert:
* Assert that two XML inputs are equal.
* Compare two XML inputs and find all differences between them.
* Assert that declarations of two XML inputs are equal.
* Assert that document types of two XML inputs are equal.
* Assert the validity of an XML input.
* Assert that the evaluation of an XPath expression on an XML input will return the expected value.
* Assert that an XPath expression exists for an XML input.
* Assert that an XML input is included by another.
And you can change the properties of an instance of XMLAssert before an assertion or comparition, in order to:
* Ignore the case of the elements' and attributes' names
* Ignore XML comments
* Ignore XML declarations and document types of both inputs
* Ignore empty elements and attributes
* Ignore orders of elements and attributes
* Ignore unimportant whitespaces
Sample
1 using System;
2 using System.IO;
3 using System.Xml;
4 using NUnit.Framework;
5 using NXUnit.Framework;
6
7
8 [TestFixture]
9 public class Sample
10 {
11 private XMLAssert xa;
12
13 [SetUp]
14 public void Init()
15 {
16 xa = XMLAssert.CreateInstance();
17 }
18
19 [Test]
20 public void TestMethod()
21 {
22 // Init the xml input
23 string s1 = "";
24 string s2 = "";
25
26 // Init the options for your purpose
27 xa.IsOrderSensitive = false;
28
29 // Assert two XML inputs are equal
30 xa.AreEqual(s1, s2, "Assertion Failed!");
31
32 // Compare two XML inputs and find all differences between them
33 CompareResult r = xa.Compare(s1, s2);
34 foreach (Diff d in r)
35 {
36 Console.WriteLine(d);
37 }
38 CompareResult another = xa.Compare(s1, s2);
39 r.Add(another);
40 for (int i = 0; i < r.Count; i++)
41 {
42 Console.WriteLine(r[i]);
43 }
44 if (r.AreEqual)
45 {
46 // They are equal
47 }
48
49 // Assert two XML declaration of the two XML inputs are equal
50 xa.AreDeclareEqual(s1, s2, "Declarations are not equal");
51
52 // Assert two document types of the two XML inputs are equal
53 xa.AreDocTypeEqual(s1, s2, "DocTypes are not equal");
54
55 // Assert the validity of an XML input
56 XMLAssert.IsValid("");
57 XMLAssert.IsValidFile(@"C:\");
58
59 // Assert the evaluation of an XPath expression on an XML input will
60 // return the expected value
61 xa.AreXpathEqual("<a/>", "/r/a[2]", s1,
62 "The xpath expression doesn't return <a/>");
63
64 // Assert an XPath expression is exist for an XML input
65 XMLAssert.XpathExist("//@b='c'", s1,
66 "The xml document doesn't have the xpath expression");
67
68 // Assert an XML input is included by another one
69 xa.IsIncluded(s1, s2, "The {0} is not included in {1}", s1, s2);
70
71 // The Counter
72 Assert.AreEqual(6, xa.Counter);
73
74 // XMLInput can use in all the samples above
75 xa.AreEqual(XMLInput.CreateFromString(s1),
76 XMLInput.CreateFromString(s2), "Assertion Failed!");
77 }
78 }
posted on 2005-07-15 13:22
Brian Sun 阅读(2449)
评论(3) 编辑 收藏 所属分类:
软件