2014-01-30 45 views
0

我想unit test一个简单的函数(编译成一个库)在C#VS 2012单位在C#中测试一个简单的类vs2012

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。 任何指针非常感谢。

+0

你在该解决方案创建单元测试项目?不清楚你所在的'Test'类在哪里。 –

+0

@AlexeiLevenkov:对不起,如何创建“单元测试项目”?我在相同的命名空间中编写了'test-class',并且'也没有找到任何右键单击选项来在vs2012中创建新的单元测试'。 –

+0

应该是文件 - >新项目(或类似的东西)..不知道你需要什么版本/版本。我相信2013年的所有版本都有。 –

回答

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调用返回的ItemName属性等于"expected item name"。当然,这只是关于你的课程的一个假设,但你可能会得到这个要点。

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

+0

谢谢。但是,我在vs2012中没有'Microsoft.visualStudio.TestTools.UnitTesting' dll。它似乎有一个'Microsoft.VisualStudio.TestTools.UITesting.dll'。我在哪里可以下载上面的那个? –

+0

该DLL被称为:'Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll'。你可以在这里找到更多的信息:http://stackoverflow.com/questions/3293317/where-is-the-microsoft-visualstudio-testtools-unittesting-namespace-on-vs2010 –

+0

谢谢。这样可行。我所要做的只是进入'C:\ Program Files文件(x86)\ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ PublicAssemblies \ Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll'并将其引用到我的项目中。右键单击'[TestClass]属性'并点击'Debug Tests'。 'VS2012'本身似乎不支持这个'dll'。 –