在Visual Studio 2012使用单元测试
2013-06-10 15:50
190 查看
本人之前很少使用单元测试,总觉得平时的工作写得代码够多了,单元测试还要再编码,增加大量工作量,相信不少程序猿也是这么认为吧。
但是我认为,在必要的时候正确运用单元测试,可以大大缩短代码的调试时间,正所谓磨刀不误砍柴工,在此建议仍不会单元测试的,还是学一下吧。当然本人在单元测试方面还是菜鸟,无论是鸡蛋鲜花都欢迎。
最近公司请微软的人做了一些关于使用VS2012进行单元测试的小培训,小生微做笔记,结合朦胧的记忆,在此自行总结,并分享之。废话少说,先上笔记:
1.先写单元测试(依我愚见,应该是接口先行,如果有的话) -> 测试失败 -> 以最小的改动(即编写实际代码)使测试通过(而在VS2012中已经不能通过现有项目直接生成测试项目了,我觉得这个功能还是应该保留,微软总是这副德行,强迫用户适应他们的产品,但是又不得不适应);
2.不因单元测试而追加功能(代码),即逻辑不受单元测试影响;
3.改变了代码的逻辑(增删改),应及时运行单元测试;
4.在测试方法声明Attribute —— TestCategory("分类或特征名");
5.在单元测试项目添加Fakes程序集分离外部依赖(如数据库访问,获取配置信息等);
6.初始化单元测试类中的成员等信息,可添加方法并声明Attribute[TestInitialize](方法需为public);
7.测试自动化。
以下我将通过自己编写代码来验证上述笔记中的部分要点。有些未涉及,以后再尝试了。
1.新建一个单元测试项目,并添加类XmlSerializationTest,代码如下:
XmlSerializationTest
还可以分析测试代码的覆盖率,如下图所示在测试资源管理器点击“运行”下的相应选项。
![](http://images.cnitblog.com/blog/132575/201306/10135941-5d1ae56bfcd6429d93500897bb5b1466.jpg)
居然是100%,真不知道这个东西微软是怎么分析出来的。
![](http://images.cnitblog.com/blog/132575/201306/10140304-3f71da078f574ffc8ba6997d2ee8e024.jpg)
把类XmlSerializationTest移到相应的项目,更改命名空间,在测试项目添加相应引用,测试通过。
将解决方案添加到TFS源码管理,我这边是用的是微软云TFS免费版。
收工。
VS提供了很多类型的测试,负载、UI等等测试,感觉还是蛮强大的。
下一篇:VS2012 单元测试之泛型类(Generics Unit Test)
但是我认为,在必要的时候正确运用单元测试,可以大大缩短代码的调试时间,正所谓磨刀不误砍柴工,在此建议仍不会单元测试的,还是学一下吧。当然本人在单元测试方面还是菜鸟,无论是鸡蛋鲜花都欢迎。
最近公司请微软的人做了一些关于使用VS2012进行单元测试的小培训,小生微做笔记,结合朦胧的记忆,在此自行总结,并分享之。废话少说,先上笔记:
1.先写单元测试(依我愚见,应该是接口先行,如果有的话) -> 测试失败 -> 以最小的改动(即编写实际代码)使测试通过(而在VS2012中已经不能通过现有项目直接生成测试项目了,我觉得这个功能还是应该保留,微软总是这副德行,强迫用户适应他们的产品,但是又不得不适应);
2.不因单元测试而追加功能(代码),即逻辑不受单元测试影响;
3.改变了代码的逻辑(增删改),应及时运行单元测试;
4.在测试方法声明Attribute —— TestCategory("分类或特征名");
5.在单元测试项目添加Fakes程序集分离外部依赖(如数据库访问,获取配置信息等);
6.初始化单元测试类中的成员等信息,可添加方法并声明Attribute[TestInitialize](方法需为public);
7.测试自动化。
以下我将通过自己编写代码来验证上述笔记中的部分要点。有些未涉及,以后再尝试了。
1.新建一个单元测试项目,并添加类XmlSerializationTest,代码如下:
[TestClass] public class XmlSerializationTest { private XmlSerialization serialization; [TestInitialize] public void InitTest() { this.serialization = new XmlSerialization(@"F:\usermodel.seri"); } [TestMethod] public void TestWriteXml() { UserModel user = new UserModel(); bool flag = serialization.WriteXml<UserModel>(user); Assert.IsTrue(flag); Assert.IsFalse(serialization.WriteXml<UserModel>(null)); } [TestMethod] public void TestReadXml() { UserModel user = new UserModel(); user.LoginName = "aa"; serialization.WriteXml<UserModel>(user); UserModel model = serialization.ReadXml<UserModel>(); Assert.IsNotNull(model); Assert.AreEqual(user.LoginName, model.LoginName); //路径不存在,应返回null UserModel modelnull = serialization.ReadXml<UserModel>(@"F:\notexists.seri"); Assert.IsNull(modelnull); } }
XmlSerializationTest
还可以分析测试代码的覆盖率,如下图所示在测试资源管理器点击“运行”下的相应选项。
![](http://images.cnitblog.com/blog/132575/201306/10135941-5d1ae56bfcd6429d93500897bb5b1466.jpg)
居然是100%,真不知道这个东西微软是怎么分析出来的。
![](http://images.cnitblog.com/blog/132575/201306/10140304-3f71da078f574ffc8ba6997d2ee8e024.jpg)
把类XmlSerializationTest移到相应的项目,更改命名空间,在测试项目添加相应引用,测试通过。
将解决方案添加到TFS源码管理,我这边是用的是微软云TFS免费版。
收工。
VS提供了很多类型的测试,负载、UI等等测试,感觉还是蛮强大的。
下一篇:VS2012 单元测试之泛型类(Generics Unit Test)
相关文章推荐
- 使用InstallUtil安装及卸载Windows服务的具体操作 Visual Studio 2012版本
- Visual Studio 2013的安装和使用及最大子数组和的单元测试
- VS2010(2012)中使用Unit Testing进行单元测试
- Visual Studio 2012使用OpenGL辅助库的问题解决方案
- 在Visual Studio 2012中使用XNA 4.0
- 使用 Visual Studio 2005 Team System 进行单元测试并生成用于 Unit Test Framework 的源代码
- [Visual Studio] 开启Visual Studio 2012通过右键菜单创建单元测试(Unit Test)
- 使用Visual Studio进行单元测试
- Visual Studio 2012中使用GitHub
- VS2012 Unit Test(Void, Action, Func) —— 对无返回值、使用Action或Func作为参数、多重载的方法进行单元测试
- Visual Studio 2012使用NUnit单元测试实践01,安装NUnit并使用
- 在Visual Studio 2012中编译使用HttpClient时
- mysql connector c++与 visual studio 2012 联合使用
- Visual Studio 2012 使用免费的Team Foundation Service
- 在Visual Studio 2012中使用VMSDK开发领域特定语言(二)
- 使用Visual Studio 2013进行单元测试
- 使用Visual Studio 2012 开发 Html5 应用
- [.Net码农]Visual Studio 2012使用水晶报表Crystal Report
- 使用 Visual Studio 2005 对私有方法的单元测试
- Visual Studio 2012 使用笔记