TA的每日心情 | 无聊 5 小时前 |
---|
签到天数: 1044 天 连续签到: 2 天 [LV.10]测试总司令
|
1.前言
单元测试,顾名思义就是针对某个单元的测试,一般情况下是指最小单元。但是这个最小单元也是有区别的,因为单元测试应用在很多方面,比如电视机组装,他的最小单元就是一个电容元件,在C语言中指一个函数,在Java里指一个类,桌面软件中可以指一个窗口等。我们这次讲的,就是针对C#语言,而他的的最小单元,是一个函数(属性也可以是最小单元)。
2.MsTest测试原理
C#语言的方法怎么测试。大部分情况,我们的测试方法就是打断点,然后进入调试,这个方法要求的条件多,过程麻烦,费时间,而且这个叫调试而不是测试。
白盒测试的方法就是另起一个方法去测试已有的方法,白盒测试的这个性质,注定了是由开发人员来实现白盒测试。
目前比较常用的单元测试框架,有Nunit、vs内置的MSTest以及Xunit,大同小异,本文主要介绍MSTest测试框架。
3.实例操作
我们创建一个控制台项目:
我们以一个公司制造电池为例进行单元测试的说明。
首先,命名一个A公司的类ACompany,及其制造电池的方法MakeBattery(string V, string shape,string type),如下:
前言已经介绍单元测试的概念,是针对方法进行测试的,这也是我们创建一个方法进行测试的原因;此时,我们在方法内,右键点击,然后选择创建单元测试。
弹出创建单元测试的对话框,如下图所示:
这里简单说明一下:
·测试框架:选择MsTestv2。测试框架一共两个——MsTest和MsTestv2。MS TEST V1: V1在.net framework中自带,引用Microsoft.VisualStudio.QualityTools.UnitTestFramework即可MS TEST V2: V2的版本依赖于两个包: MSTest.TestFramework和MSTest.TestAdapter这两个版本使用起来还是大同小异的,MS TEST V2主要是为了.net core准备的,当然也可以在.net framework上运行,并且新加入了一些扩展。
· 测试项目:默认选择新测试项目。在这之后,mstest会自动帮开发者选择相应的测试项目。
· 测试项目的名称格式。自动化测试本质上也是一个项目,类似类库项目的一个无法自启动的项目。所有的测试方法集成在里面。默认的名称和被测试的项目名称有关联。
· 命名空间。类似测试项目的名称,和我们所需要测试的方法所在的命名空间有一定关联。
· 测试的类名称,方法名称如上。
我们可以发现,一个项目的mstest单元测试项目与其是一一对应的。
接下来点击确定,开始创建单元测试:
如上,我们就创建了一个简单的单元测试。接下来打开测试资源管理器。
点击运行,开始单元测试。
测试会失败:
因为我们的测试方法直接断言失败。这并不是我们想要的结果。我们的目的是为了测试方法,我们需要修改里面的测试方法。
如下图所示:
我们这里模拟了一个创造电池的方法,我们要创造一个12V的、圆形的[url=]手机[/url]电池。看代码的最后一句:
Assert.AreEqual(“电压12V形状为圆形的手机电池”, res);
Assert是断言的意思,这里的目的是为了判断方法运行的结果是否和我们预期的结果一样,这是判断单元测试是否OK的关键。
被测试的方法不一定返回值,只要有输出就可以。
|
|