使用vs2012对c#中的简单类进行单元测试

时间:2014-01-30 08:25:01

标签: c# .net unit-testing

我在c#VS 2012中尝试unit test一个简单的函数(编译到库中)。

public static class Configuration
    {
        public static T DeSerialize<T>(string filePath)
        {
            if (!System.IO.File.Exists(filePath))
            {
                throw new System.IO.FileNotFoundException(filePath);
            }

            using (Stream reader = new FileStream(filePath, FileMode.Open))
            {
                var serializer = new System.Xml.Serialization.XmlSerializer(T);
                return (T)serializer.Deserialize(reader);
            }
        }
    }

    [TestClass]
    public class Test
    {
        [TestMethod]
        public void deserializationTest()
        {
            var something = Configuration.DeSerialize<Item>(@"d:\CoffeeShop.Items.config");
            Console.WriteLine(something);

        }
    }

但是,我被what to do next?困扰了。什么namespaces should I import。 任何指针都非常感激。

1 个答案:

答案 0 :(得分:3)

您应该使用Microsoft.VisualStudio.TestTools.UnitTesting命名空间,该命名空间包含MSTest框架类(正如TestClassTestMethod属性所暗示的那样使用)。然后,您应该使用Assert类'方法来验证您的测试结果。您的代码可能如下所示: `

[TestMethod]
public void deserializationTest()
{
    var something = Configuration.DeSerialize<Item>(@"d:\CoffeeShop.Items.config");
    Assert.AreEqual("expected item name", something.Name);
}

此测试验证DeSerialize调用返回Item哪个Name属性等于"expected item name"。当然,这只是关于你的Item课程如何看待的假设,但你可能会得到要点。

如果您开始使用Visual Studio中的单元测试,本教程可能会派上用场:http://msdn.microsoft.com/en-us/library/ms182532.aspx