测试项目

Visual Studio 2010 单元测试共分七个部分:数据库

普通单元测试、顺序单元测试、压力测试,Generic测试、数据库测试、UI界面测试和Web性能测试。 小程序

Visual Studio 2010 单元测试之一---普通单元测试:http://blog.csdn.net/tjvictor/archive/2011/02/09/6175362.aspxapp

 

Visual Studio 2010 单元测试之二---顺序单元测试:http://blog.csdn.net/tjvictor/archive/2011/02/09/6175472.aspxide

 

Visual Studio 2010 单元测试之三---压力测试:http://blog.csdn.net/tjvictor/archive/2011/02/09/6175477.aspx函数

 

Visual Studio 2010 单元测试之四---Generic测试:http://blog.csdn.net/tjvictor/archive/2011/02/09/6175485.aspx性能

 

Visual Studio 2010 单元测试之五---数据库测试:http://blog.csdn.net/tjvictor/archive/2011/02/09/6175491.aspx单元测试

 

Visual Studio 2010 单元测试之六---UI界面测试:http://blog.csdn.net/tjvictor/archive/2011/02/09/6175499.aspx测试

     本文以Visual Studio 2010为例,来介绍如何在Visual Studio里面进行单元测试.this

     首先来介绍普通单元测试,这是进行顺序测试、压力测试的基础。若是在Visual Studio 2010(2008)里面没有发现下图中的Test菜单,请用Visual Studio安装光盘进行安装,由于Visual Studio单元测试插件安装时可能不是默认选项。spa

1.JPG

 

测试以前,咱们要准备一些测试代码。或者从下面的连接下载完整的项目工程。

http://download.csdn.net/source/3014236

新建一个名为AppSample的Lib。里面有一个MathUtility文件,包含加减乘除四个方法。代码以下:

namespace TJVictor.UT.AppSample

{

    public class MathUtility

    {

        public MathUtility() { }

 

        public static int Add(int a, int b)

        {

            return a + b;

        }

 

        public static int Minus(int a, int b)

        {

            return a - b;

        }

 

        public static int Divide(int a, int b)

        {

            return a / b;

        }

 

        public static int Multiply(int a, int b)

        {

            return a * b;

        }

    }

}

 

建立单元测试项目有两种方法:

1.直接建立单元测试项目:File->New->Project->Test Project. 以下图:

2.JPG

 

2. 直接在须要建立单元测试的函数上建立:右击函数名->Create Unit Tests。 以下图

3.JPG

 

         这样就建立好了单元测试项目。Visual Studio 会自动生成一个单元测试工程。推荐使用第二种方法建立,由于第一种方法建立的只有单元测试工程,第二种方法会把单元测试函数也一块儿建立了出来。

 

本文以第二种建立的方式为例,继续下一步,讲解单元测试文件。

建立好的单元测试工程以下图:

4.JPG

其中MathUtilityTest.cs就是自动生成的单元测试文件,打开能够看到相似以下代码。

        [TestMethod()]

        public void AddTest()

        {

            int a = 0; // TODO: Initialize to an appropriate value

            int b = 0; // TODO: Initialize to an appropriate value

            int expected = 0; // TODO: Initialize to an appropriate value

            int actual;

            actual = MathUtility.Add(a, b);

            Assert.AreEqual(expected, actual);

            Assert.Inconclusive("Verify the correctness of this test method.");

        }

 

关于单元测试的各类断言,不在本文讨论范围以内。下表列出Visual Studio 2010支持的断言及相关解释。

断言

解释

AreEqual

验证值相等

AreNotEqual

验证值不相等

AreSame

验证引用相等

AreNotSame

验证引用不相等

Inconclusive

暗示条件还未被验证

IsTrue

验证条件为真

IsFalse

验证条件为假

IsInstanceOfType

验证明例匹配类型

IsNotInstanceOfType

验证明例不匹配类型

IsNotNull

验证条件为NULL

IsNull

验证条件不为NULL

Fail

验证失败

 

测试函数AddTest()的属性[TestMethod()]表示这个方法是个可运行单元测试方法,区别类中的其余方法(如一些测试辅助方法)。

须要特别注意的是:Assert.Inconclusive("Verify the correctness of this test method.");语句是默认添加的,意思是这个方法是Visual Studio自动建立,运行前自删除或注释此句,不然运行结果没法经过。

按上面的步骤,把MathUtility里面的全部方法都创建相应的单元测试,而后按F6进行编译。编译后,就能够在单元测试窗口中看到咱们刚刚创建的测试方法了。

Test->Windows->Test List Editor以下图:

5.JPG

 

修改DivideTest代码以下:

        [TestMethod()]

        public void DivideTest()

        {

            int a = 100; // TODO: Initialize to an appropriate value

            int b = 2; // TODO: Initialize to an appropriate value

            int expected = 50; // TODO: Initialize to an appropriate value

            int actual;

           

            actual = MathUtility.Divide(a, b);

            Assert.AreEqual(expected, actual);

            //Assert.Inconclusive("Verify the correctness of this test method.");

        }

在Test List Editor选中DivideTest方法后,右击以下图

6.JPG

 

1.Run Checked Tests:直接运行此单元测试函数

2.Debug Checked Tests:以Debug模式运行。在此模式下运行单元测试函数,能够在单元测试函数(DivideTest)或是被测函数(MathUtility.Divide)中加断点,则程序会自动停留在断点处。

3.Open Test:打开此测试函数的方法,至关于双击。

4.Disable:把此测试方法置为无效。

 

 

左击Run Checked Tests后,运行结果以下图,证实测试经过:

7.JPG

从新修改DivideTest()程序以下:

        [TestMethod()]

        public void DivideTest()

        {

            int a = 100; // TODO: Initialize to an appropriate value

            int b = 2; // TODO: Initialize to an appropriate value

            int expected = 60; // TODO: Initialize to an appropriate value

            int actual;

           

            actual = MathUtility.Divide(a, b);

            Assert.AreEqual(expected, actual);

            //Assert.Inconclusive("Verify the correctness of this test method.");

        }

再次运行,结果以下:

8.JPG

测试失败,缘由是:期待值为60,实际值为50,断言失败。

 

从新修改DivideTest()程序以下:

        public void DivideTest()

        {

            int a = 100; // TODO: Initialize to an appropriate value

            int b = 0; // TODO: Initialize to an appropriate value

            int expected = 60; // TODO: Initialize to an appropriate value

            int actual;

           

            actual = MathUtility.Divide(a, b);

            Assert.AreEqual(expected, actual);

            //Assert.Inconclusive("Verify the correctness of this test method.");

        }

此次以Debug模式运行,则程序会在return a / b;抛出异常,显示被除数不能为0.

 

至此,一个简单的单元测试已经从头至尾跑了一遍。细心的读者必定会发如今MathUtilityTest.cs测试文件里面还有四个被注释掉的方法,下表列出了这四个方法的解释和用法。

函数名

用法

[ClassInitialize()]

MyClassInitialize

这个方法会在每次调用测试方法前被自动调用。假设在调用AddTest(),DivideTest()等方法以前都须要初始化一些基本数据列表,则这个工做能够放在MyClassInitialize函数里面,不用分别写在每一个测试方法里。

[ClassCleanup()]

MyClassCleanup

这个方法会在每次调用测试方法结束后被自动调用。

[TestInitialize()]

MyTestInitialize

这个方法会在每次启动一个测试过程前被自动调用。例如本次测试一共选择了AddTest(),DivideTest()两个测试方法,则在调用这两个方法前,MyTestInitialize会先被调用。与MyClassInitialize不一样的是,MyClassInitialize是每次调用测试方法时都会被调用,至关于函数级的调用,MyTestInitialize则只在测试过程前会被调用一次,在测试过程结束前,不会再被调用,至关于过程级的调用。

[TestCleanup()]

MyTestCleanup

这个方法会在每次结束一个测试过程后被自动调用。

 

Visual Studio 之所谓把这四个函数注释掉,缘由是这四个函数只是示意性函数(从名字中就能够看出)。关键是看这四个函数的方法属性[ClassInitialize()],[ClassCleanup()], [TestInitialize()], [TestCleanup()]只要把相关的属性加到相关的方法上,那么这个方法就具备的上面所描述的功能。

 

单元测试适用范围:

1.验证函数正确性。对于一个函数,只要咱们把相关的测试数据都写全,而后run一下,就知道是否都能经过。之后修改此方法后,只要再次run一下,就知道这次修改是否影响到了之前的测试用例,大大节省时间和提升正确率。

2.Debug程序。咱们通常写后台代码时,都要写一个console或是winform小程序要调试验证所写的类是否能run起来,那么单元测试中的Debug模式就能够胜任此工做。

 

 

下面介绍两个使用时的小技巧。

1.能够在Test Result窗口里面导出测试结果。导出的结果包括一份测试报告和测试程序。证实此程序已经经过了报告中的全部测试用例,至关于Release了一个版本。

2.设置测试数量。每运行一次测试过程,就会生成一次测试报告和程序。Visual Studio默认次数是25,即超过25后,就会提示超出测试数次。咱们能够经过下面的设置来提升次数。

Tool->Options->Test Tools->Test Execution,把里面的25改为100便可。以下图

9.JPG

至此,普通单元测试已经完成。请继续关注顺序单元测试。

相关文章
相关标签/搜索