51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 797|回复: 0
打印 上一主题 下一主题

[原创] MsTest单元测试的使用基础(上)

[复制链接]
  • TA的每日心情
    无聊
    5 小时前
  • 签到天数: 1044 天

    连续签到: 2 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2022-12-19 15:52:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    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的关键。

      被测试的方法不一定返回值,只要有输出就可以。

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-12 14:54 , Processed in 0.061986 second(s), 26 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表