VS2010的单元测试,很好用
来源:互联网 发布:淘宝运营工作流程图 编辑:程序博客网 时间:2024/06/17 06:25
TDD(测试驱动开发)一直都是敏捷里一个重要的方法,毕竟经过测试用例检验过的代码总会让人更加放心,关于软件测试我们有白盒测试,黑盒测试,灰盒测试等许多手段,其中单元测试更是必不可少而且非常有效。VS.net环境的单元测试是做得比较智能化而且好用的,我们就来试试吧。
首先,打开VS2010,创建一个简单的C#控制台程序,输入如下代码:(简单的加法减法)
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{ class Program { static int add(int a, int b) { return a + b; } public int sub(int a, int b) { return a - b; } static void Main(string[] args) { Console.WriteLine(add(3, 4)); } }}然后在函数“add”的名称上邮件鼠标,选择创建单元测试用例如下图
VS2010自动为我们创建一个新的测试项目,打开其中的源文件ProgramTest.cs,设置自己的测试集(为了展示方便,sub函数我也增加单元测试)
/// <summary> ///add 的测试 ///</summary> [TestMethod()] [DeploymentItem("ConsoleApplication1.exe")] public void addTest() { int a = 5; // TODO: 初始化为适当的值 int b = 3; // TODO: 初始化为适当的值 int expected = 11; // TODO: 初始化为适当的值 int actual; actual = Program_Accessor.add(a, b); Assert.AreEqual(expected, actual); //Assert.Inconclusive("验证此测试方法的正确性。"); } /// <summary> ///sub 的测试 ///</summary> [TestMethod()] [DeploymentItem("ConsoleApplication1.exe")] public void subTest() { Program_Accessor target = new Program_Accessor(); // TODO: 初始化为适当的值 int a = 5; // TODO: 初始化为适当的值 int b = 2; // TODO: 初始化为适当的值 int expected = 3; // TODO: 初始化为适当的值 int actual; actual = target.sub(a, b); Assert.AreEqual(expected, actual); //Assert.Inconclusive("验证此测试方法的正确性。"); } }运行测试项目,可以看到下面的测试结果,然后再针对结果去查询出错时因为程序的bug还是测试集选取的问题。
我再增加一个类实现求幂的功能
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{ class Test { private int a; private int b; Test() { a = 3; b = 4; } public int pow() { return int.Parse(Math.Pow(a, b).ToString()); } } class Program { static int add(int a, int b) { return a + b; } public int sub(int a, int b) { return a - b; } static void Main(string[] args) { Console.WriteLine(add(3, 4)); } }}同样的方法针对Test添加单元测试,如下(3的4次方是81):
/// <summary> ///pow 的测试 ///</summary> [TestMethod()] public void powTest() { Test_Accessor target = new Test_Accessor(); // TODO: 初始化为适当的值 int expected = 81; // TODO: 初始化为适当的值 int actual; actual = target.pow(); Assert.AreEqual(expected, actual); //Assert.Inconclusive("验证此测试方法的正确性。"); }然后运行测试项目,可以看到如下结果:
我觉得编写测试代码是一个好习惯,不过如何设计测试用例,如何能够让测试用例覆盖程序的所有分支确实是比较麻烦的事情,不过多做单元测试还是能对提升我们编码质量,增强我们的编程信心,呵呵
- VS2010的单元测试,很好用
- vs2010的单元测试文章
- VS2010用C#写单元测试的一些总结
- vs2010单元测试
- 很好用的Matrix
- 很好用的KVO
- 很好用的leakcanary
- VS2010中的单元测试
- VS2010中的单元测试
- VS2010中的单元测试
- VS2010 测试 -普通单元测试
- VS2010 测试 -单元测试
- VS2010中的单元测试
- vs2010结合gtest单元测试
- VS2010编写动态链接库DLL及单元测试用例
- 很好用的虚拟机-VirtualBox
- 一个很好用的软件
- Foxmail的IMAP很好用
- Linux\Unix IPC进程通信
- oracle事务之oracle读一致性
- 数字图像处理
- Android私有文件资源文件的存取
- .NET日记——枚举和结构
- VS2010的单元测试,很好用
- 前端开发工程师
- OSI七层模型与 TCP/IP五层模型 TCP/UDP的区别
- oracle10g的临时表空间
- Android下检测网络连接 3G WIFI
- 4.Apache Axis2用户指引 - 创建客户端
- Oracle 物化视图 --David Dai
- java中堆栈和内存分配
- 适应IE、FireFox、Google浏览器的回车提交事件