用Visual studio2005的单元测试框架实现一个简单的计算器

原创 2006年05月17日 22:42:00

不知道大家注意没有,在VS2005中微软加入了unit test的一个框架。最近有点时间就利用这个工具自己写了一个模仿Windows自带计算器的小程序:

虽然程序看起来简单,但是要做到和Windows自带的行为一样却并没有看上去的简单:不同的按钮,不同的顺序能够组合出很多用例。如果每添加一个新功能就要手动的去试有没有影响原来的功能,工作量不仅大而且容易出错。而用了VS2005的单元测试框架,我们就不必每次自己测试有没有regress了。

首先,我们当然要建一个WinForm工程,然后拉些控件改改属性。为了能进行单元测试,我们要把逻辑和计算从UI分开,放到一个单独的类里,而不是写在这个Form里。在我的例子里,我单独做了一个Calculator类。这个类有一些public的方法,每个函数对应一个button,每当用户按一个button,就会去调用相应的方法(我把所有数字键和小数点的方法合成一个了,这样接口可以简单些),下面是这个类的代码片断:

    public class Calculator
    {
        public string Proceed(char inputChar)//input digital or dot
        {...}


        public string DoEqual() //press '=' button
        {...}

        public string DoMultiply() //press '/' button
        {...}

        ....

    }

类的框架写好之后,下面就要建立单元测试工程:New project,然后选择Test project:

然后在新建的测试工程上单击右键,选择Add->Unit test。在弹出的对话框里选择Calculator类:

 

点击OK之后系统就会替我们创建测试用例的方法。不过系统创建的不大符合我们的要求,下面是我自己改过的一个用例:

        [TestMethod()]
        public void ProceedTest9()
        {
            string expected = "12";
            string actual;

            actual = InputString("4+4+4+");

            Assert.AreEqual(expected, actual, "SimpleCalculator.Calculator.Proceed did not return the expected value.");
        }

InputString("4+4+4+"); 这行代码就代表用户依次在计算器上按了4+4+4+按钮。expected表示期望的结果。actual表示实际运行的结果。

Assert.AreEqual的用法大家可以看看MSDN。Assert类里还有很多类似于AreEqual的方法,大家可以查查。InputString方法的片断:

        private string InputString(string input)
        {
            string ret = null;
            for (int i = 0; i < input.Length; i++)
            {
                switch (input[i])
                {
                    case '+':
                        ret = mCalculator.DoPlus();
                        break;
                    case '-':
                        ret = mCalculator.DoMinus();
                        break;
                    case '*':
                        ret = mCalculator.DoMultiply();
                        break;
                    case '/':
                        ret = mCalculator.DoDivide();
                        break;

                    case '=':
                        ret = mCalculator.DoEqual();
                        break;

                    .....

                    default:
                        ret = mCalculator.Proceed(input[i]);
                        break;
                }

            }
            return ret;
        }

然后将测试工程设置为起始工程,点击运行按钮:

我写的Calculator类通过了全部61个测试用例,呵呵。如果某个测试没有通过,VS2005会做出提示。此外,还可以在测试用例里直接进行debug:可以设置断点等等。

利用这个工具,我们可以方便地进行单元测试。当然这里只是介绍了一些基本用法,还有其他很多相对高端的应用。大家有兴趣可以慢慢研究。

相关文章推荐

基于Visual Studio与Google Test的单元测试框架搭建方法

单元测试是软件开发的主要阶段之一,可以有效保证代码质量,提升产品稳定性与可靠性。单元测试可基于多种环境开发,本文介绍基于VisualStudio与GoogleTest的单元测试框架搭建方法。 Visu...

使用Visual Studio 2013进行单元测试--初级篇

1.打开VS2013 --> 新建一个项目。这里我们默认创建一个控制台项目。取名为UnitTestDemo 2.在解决方案里面新增一个单元测试项目。取名为UnitTestDemoTest 创建完毕...

ASP.NET MVC 5 (八) Visual Studio单元测试

这里记录如何使用Visual Studio的内置单元测试准备示例 创建单元测试项目 添加项目引用 添加单元测试 第一个单元测试 添加其他单元测试 运行单元测试并发现错误 实现特性 测试并修正代码准备示...

Visual Studio 11开发指南(15)C++11单元测试

启动 Visual Studio 11。c + + 单元测试 (cpp)本机单元测试项目最小的框架创建以后就可以开始编写单元测试。1.#include "stdafx.h" 2.#include "...

Visual Studio单元测试命令行方式之二

前面我们提高,在VS2010以及之前的版本中,使用的是MSTest.exe命令,而在VS2012,VS2013,VS2015版本中,都是VSTest.Console.exe命令了,MSTEST改为兼容...

带你玩转Visual Studio——单元测试

上一篇文章带你玩转Visual Studio——性能分析与优化讲了找出性能瓶颈和性能优化相关的技能,在大型企业项目的开发中,性能是固然重要的,而另一个过程——测试也是必不可少的。测试有很多的各类:功能...

Visual Studio单元测试命令行方式

我们都知道,使用MS Visual Studio可以创建单元测试用例,但是测试时需要打开编辑器,并且手动运行一些测试,这个对于自动构建,自动测试来说是不方便的,所以我们采用了命令行的方式进行单元测试。...

C# Visual Studio环境下进行单元测试【转】【整理】

原文图片是在Visual Studio 2010环境下,本人在2013环境下测试步骤也大致相同,特此整理; 单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立单元将在与...

使用 Visual Studio 2015 对 C++ 代码运行单元测试

代码写多了,往往规模会越来越大,这时候就有必要保证代码的稳定性了;不过我从网上看到的单元测试貌似大多都是用的 JUnit, 难道 C++ 就没有了吗?我从网上找了一些方法试了下其实挺简单的。下面我以一...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用Visual studio2005的单元测试框架实现一个简单的计算器
举报原因:
原因补充:

(最多只允许输入30个字)