lsekfe 发表于 2022-12-19 15:52:27

MsTest单元测试的使用基础(上)

1.前言
  单元测试,顾名思义就是针对某个单元的测试,一般情况下是指最小单元。但是这个最小单元也是有区别的,因为单元测试应用在很多方面,比如电视机组装,他的最小单元就是一个电容元件,在C语言中指一个函数,在Java里指一个类,桌面软件中可以指一个窗口等。我们这次讲的,就是针对C#语言,而他的的最小单元,是一个函数(属性也可以是最小单元)。
  2.MsTest测试原理
  C#语言的方法怎么测试。大部分情况,我们的测试方法就是打断点,然后进入调试,这个方法要求的条件多,过程麻烦,费时间,而且这个叫调试而不是测试。
  白盒测试的方法就是另起一个方法去测试已有的方法,白盒测试的这个性质,注定了是由开发人员来实现白盒测试。
  目前比较常用的单元测试框架,有Nunit、vs内置的MSTest以及Xunit,大同小异,本文主要介绍MSTest测试框架。
  3.实例操作
  我们创建一个控制台项目:
http://www.51testing.com/attachments/2022/12/15326880_202212161528121c1nL.png
  我们以一个公司制造电池为例进行单元测试的说明。
  首先,命名一个A公司的类ACompany,及其制造电池的方法MakeBattery(string V, string shape,string type),如下:
http://www.51testing.com/attachments/2022/12/15326880_202212161528161BF69.png
  前言已经介绍单元测试的概念,是针对方法进行测试的,这也是我们创建一个方法进行测试的原因;此时,我们在方法内,右键点击,然后选择创建单元测试。
http://www.51testing.com/attachments/2022/12/15326880_202212161528191z6eU.png
  弹出创建单元测试的对话框,如下图所示:
http://www.51testing.com/attachments/2022/12/15326880_202212161528221OksX.png
  这里简单说明一下:
  ·测试框架:选择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单元测试项目与其是一一对应的。
  接下来点击确定,开始创建单元测试:
http://www.51testing.com/attachments/2022/12/15326880_202212161528241feYN.pnghttp://www.51testing.com/attachments/2022/12/15326880_202212161528271ShdT.png
  如上,我们就创建了一个简单的单元测试。接下来打开测试资源管理器。
http://www.51testing.com/attachments/2022/12/15326880_202212161528301n6SL.png
  点击运行,开始单元测试。
http://www.51testing.com/attachments/2022/12/15326880_202212161528321ycrx.png
  测试会失败:
http://www.51testing.com/attachments/2022/12/15326880_202212161528351bfGr.png
  因为我们的测试方法直接断言失败。这并不是我们想要的结果。我们的目的是为了测试方法,我们需要修改里面的测试方法。
  如下图所示:
http://www.51testing.com/attachments/2022/12/15326880_2022121615283815aRp.png
  我们这里模拟了一个创造电池的方法,我们要创造一个12V的、圆形的手机电池。看代码的最后一句:
  Assert.AreEqual(“电压12V形状为圆形的手机电池”, res);

  Assert是断言的意思,这里的目的是为了判断方法运行的结果是否和我们预期的结果一样,这是判断单元测试是否OK的关键。
http://www.51testing.com/attachments/2022/12/15326880_202212161528411mnR5.png
  被测试的方法不一定返回值,只要有输出就可以。

页: [1]
查看完整版本: MsTest单元测试的使用基础(上)