.NET单元测试 vistudio单元测试

发表于:2023-1-12 09:10

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:ibmfashion    来源:51CTO博客

  说到单元测试,引用《单元测试之道C#版》里面的一段话:
  单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。例如,你可能把一个很大的值放入一个有序list? 中去,然后确认该值出现在list? 的尾部。或者,你可能会从字符串中删除匹配某种模式的字符,然后确认字符串确实不再包含这些字符了。
  执行单元测试,是为了证明某段代码的行为确实和开发者所期望的一致。
  其实进行单元测试很简单,下面本人介绍Visual Studio 2008自带的单元测试功能:
  第一步:首先建立一个C#类库项目,其中增加一个Contract类,此类有一个GetContractNameByGUID方法,具体代码如下:
  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  namespace Business
  {
      public class Contract
      {
          private string _ContractName;
          public string ContractName
          {
              get
              {
                  return _ContractName;
              }
              set
              {
                  _ContractName = value;
              }
          }
          public Contract()
          {
          }
          public Contract(string contractName)
          {
              this._ContractName = contractName;
          }
          //通过合同GUID获取合同名称
          public string GetContractNameByGUID (string strContractGUID)
          {
              if (strContractGUID.Length > 10)
              {
                  return "10";
              }
              else
              {
                  return "8";
              }
          }
      }
  }
  第二步:创建单元测试代码
  在Visual 2008里面创建单元测试代码其实很简单,在类名单击鼠标右键,点击“创建单元测试”菜单即可,如下图所示:
  然后弹出“创建单元测试”的对话框,可选择当前程序集中的类的函数创建单元测试项目,默认选择当前类,如下图所示:
  点击“确定”,Viual 2008会自动生成ContractTest类,包括GetContractNameByGUIDTest函数供测试GetContractNameByGUID,如下所示:
  /// 
          ///GetContractNameByGUID 的测试
          ///
          [TestMethod()]
          public void GetContractNameByGUIDTest()
          {
              Contract target = new Contract(); // TODO: 初始化为适当的值
              string strContractGUID = string.Empty; // TODO: 初始化为适当的值
              string expected = string.Empty; // TODO: 初始化为适当的值
              string actual;
              actual = target.GetContractNameByGUID(strContractGUID);
              Assert.AreEqual(expected, actual);
              Assert.Inconclusive("验证此测试方法的正确性。");
          }
  其中,strContractGUID为GetContractNameByGUID函数的输入参数,默认值为string.Empty,expected变更为预计输出值,默认值也为string.Empty,需要我们进行个性化设置。Assert.AreEqual为验证指定的值是否相等的函数,如果不相等则认为失败,就是通过此方法来测试函数的输入与我们的预计输出是否相等,Assert.Inconclusive代码为输出结果时显示的内容,我们不需要显示,只需要显示错误信息即可,因此需要删除掉此行代码。我们将自动生成的代码改造如下:
  /// 
          ///GetContractNameByGUID 的测试
          ///
          [TestMethod()]
          public void GetContractNameByGUIDTest()
          {
              Contract target = new Contract(); // TODO: 初始化为适当的值
    string strContractGUID = "  111111111   "; // TODO: 初始化为适当的值
              string expected = "8"; // TODO: 初始化为适当的值
              string actual;
              actual = target.GetContractNameByGUID(strContractGUID);
              Assert.AreEqual(expected, actual);
           }
  第三步:执行测试代码
  在Visual 2008可以很方便执行测试代码,可点击“运行上下文中的测试”按钮进行测试,如下图:
  执行完后,可在“测试结果”窗口查看我们的单元测试结果,如下图所示:
  从结果可知,测试结果不能过,可通过查看错误信息帮助我们找出错误原因,原来" 111111111 "字符串前后都存在空格,字符串的长度大于10,我们判断长度时应该去除掉前后的空格,将代码改造如下:
  //通过合同GUID获取合同名称
          public string GetContractNameByGUID (string strContractGUID)
          {
  strContractGUID.Trim().Length > 10)
              {
                  return "10";
              }
              else
              {
                  return "8";
              }
          }
  重新执行测试代码,结果如下:
  测试通过,代码没有问题。
  本篇简单介绍了Visual2008最简单的单元测试功能,下期将介绍如何利用Visual2008进行Web页面的测试。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号