using System; using MbUnit.Framework; using MbUnit.Core; using System.Xml; using System.Xml.Serialization; namespace MbUnitSamples.DataFixture { public static class MyMethods { public static int Add(int a, int b) { return a + b; } } [MbUnit.Framework.DataFixture] [XmlDataProvider(@"E:\My Documents\Visual Studio 2005\Projects\MbUnitSamples\MbUnitRowTest\DataFixtureSample.xml", "DataFixture/Test")] public class DataFixtureSample { [ForEachTest("Data")] //Gotcha - Don't include a slash!! "/Data" causes it not to display in UI public void TestAddMethodUsingXML(XmlNode node) { int test = MyMethods.Add(Convert.ToInt32(node.Attributes["a"].InnerText), Convert.ToInt32(node.Attributes["b"].InnerText)); Assert.AreEqual(test, Convert.ToInt32(node.Attributes["expected"].InnerText)); } [ForEachTest("Data", DataType = typeof(Data))] public void TestAddMethodUsingXMLWithSerialization(Data data) { int test = MyMethods.Add(data.a, data.b); Assert.AreEqual(test, data.expected); } } [MbUnit.Framework.DataFixture] //Make sure you set the xml file as Buld Action : Embedded Resource [ResourceXmlDataProvider(typeof(DataFixtureSampleResource), "MbUnitSamples.DataFixtureSample.xml", //'MbUnitSamples.' is my project name. "DataFixture/Test")] public class DataFixtureSampleResource { [ForEachTest("Data")] public void TestAddMethodUsingXML(XmlNode node) { int test = MyMethods.Add(Convert.ToInt32(node.Attributes["a"].InnerText), Convert.ToInt32(node.Attributes["b"].InnerText)); Assert.AreEqual(test, Convert.ToInt32(node.Attributes["expected"].InnerText)); } [ForEachTest("Data", DataType = typeof(Data))] public void ForEachTestWithSerialization(Data data) { int test = MyMethods.Add(data.a, data.b); Assert.AreEqual(test, data.expected); } } [XmlRoot("Data")] public class Data { public Data() { } [XmlAttribute("a")] public int a; [XmlAttribute("b")] public int b; [XmlAttribute("expected")] public int expected; public override string ToString() { return String.Format("{0} + {1} = {2}", a, b, expected); } } }