C# 使用MSTest进行单元测试

2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)_软件测试刷题小程序-CSDN博客文章浏览阅读2.8k次,点赞85次,收藏12次。你知不知道有这么一个软件测试面试的刷题小程序。里面包含了面试常问的软件测试基础题,web自动化测试、app自动化测试、接口测试、性能测试、自动化测试、安全测试及一些常问到的人力资源题目。最主要的是他还收集了像阿里、华为这样的大厂面试真题,还有互动交流板块……_软件测试刷题小程序外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502写在前面

MSTest是微软官方提供的.NET平台下的单元测试框架;可使用DataRow属性来指定数据,驱动测试用例所用到的值,连续对每个数据化进行运行测试,也可以使用DynamicData 属性来指定数据,驱动测试用例所用数据的成员的名称、种类(属性、默认值或方法)和定义类型(默认情况下使用当前类型)。

代码实现

新建目标类DataChecker,增加待测试的方法,内容如下:

    public class DataChecker
      {
          public bool IsPrime(int candidate)
          {
              if (candidate == 1)
              {
                  return true;
              }
              return false;
          }
          public int AddInt(int first, int second)
          {
              int sum = first;
              for (int i = 0; i < second; i++)
              {
                  sum += 1;
              }
              return sum;
          }
      }
   新建单元测试类UnitTest1
  namespace MSTestTester.Tests;
  [TestClass]
  public class UnitTest1
  {
      private readonly DataChecker _dataChecker;
      public UnitTest1()
      {
          _dataChecker = new DataChecker();
      }
      [TestMethod]
      [DataRow(-1)]
      [DataRow(0)]
      [DataRow(1)]
      public void IsPrime_ValuesLessThan2_ReturnFalse(int value)
      {
          var result = _dataChecker.IsPrime(value);
   
          Assert.IsFalse(result, $"{value} should not be prime");
      }
      [DataTestMethod]
      [DataRow(1, 1, 2)]
      [DataRow(2, 2, 4)]
      [DataRow(3, 3, 6)]
      [DataRow(0, 0, 1)] // The test run with this row fails
      public void AddInt_DataRowTest(int x, int y, int expected)
      {
          int actual = _dataChecker.AddInt(x, y);
          Assert.AreEqual(expected, actual,"x:<{0}> y:<{1}>",new object[] { x, y });
      }
      public static IEnumerable<object[]> AdditionData
      {
          get
          {
              return new[]
              {
              new object[] { 1, 1, 2 },
              new object[] { 2, 2, 4 },
              new object[] { 3, 3, 6 },
              new object[] { 0, 0, 1 },
          };
          }
      }
      [TestMethod]
      [DynamicData(nameof(AdditionData))]
      public void AddIntegers_FromDynamicDataTest(int x, int y, int expected)
      {
          int actual = _dataChecker.AddInt(x, y);
          Assert.AreEqual(expected, actual, "x:<{0}> y:<{1}>", new object[] { x, y });
      }
  }

执行结果

打开命令行窗口执行以下命令:

<{0}> y:<{1}>", new object[] { x, y });
   }
  }


**执行结果**


打开命令行窗口执行以下命令:

完整的中文版《单元测试之道C#版》。单元测试不但会使你的工作完成得更轻松,而且会令你的设计变得更好,甚至大大减少你花在调试上面的时间。 在我们上面的小故事里面,Pat 因为假设底层的代码是正确无误的而卷入麻烦之中,先是高层代码中使用了底层代码;然后这些高层代码又被更高层的代码所使用,如此往复。在对这些代码的行为没有任何信心的前提下,Pat 等于是在假设上面用竖立卡片堆砌了一间房子——只要将下面卡片轻轻移动,整间房子就会轰然倒塌。 当基本的底层代码不再可靠时,那么必需的改动就无法只局限在底层。虽然你可以修正底层的问题,但是这些对底层代码的修改必然会影响到高层代码,于是高层代码也连带地需要修改;以此递推,就很可能会动到更高层的代码。于是,一个对底层代码的修正,可能会导致对几乎所有代码的一连串改动,从而使修改越来越多,也越来越复杂。于是,整间由卡片堆成的房子就由此倒塌,从而使整个项目也以失败告终。 Pat 总是说:“这怎么可能呢?”或者“我实在想不明白为什么会这样”。如果你发现自己有时候也会有这种想法,那么这通常是你对自己的代码还缺乏足够信心的表现——你并不能确认哪些是工作正常的而哪些不是。 为了获得Dale 所具有的那种对代码的信心,你需要“询问”代码究竟做了什么,并检查所产生的结果是否确实和你所期望的一致。 这个简单的想法描述了单元测试的核心内涵:这个简单有效的技术就是为了令代码变得更加完美。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值