一文看懂看懂系列--C#单元测试

文章目录

前言

听说复杂的项目最好都要单元测试一下。我这里也试试单元测试这个功能。到时候调试起来也方便。

参考文档

C# 单元测试(入门):https://www.cnblogs.com/anayigeren/p/10020811.html

新建控制台项目

在这里插入图片描述

namespace ConsoleApp1
{
	//这里用public,因为测试项目要引用这个方法
    public class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");
            Console.ReadLine();
        }
        /// <summary>
        /// 测试方法
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <returns></returns>
        public static int AddNum(int x, int y)
        {
            return Math.Abs(x + y);
        }
    }
}

    新建测试项目

    在这里插入图片描述

    添加引用

    在这里插入图片描述
    在这里插入图片描述

    添加测试方法--DataRow就是入参

    namespace TestProject1
    {
        [TestClass]
        public class UnitTest1
        {
            [TestMethod]
            [DataRow(1, 2)]
            [DataRow(3, 10)]
            [DataRow(-3, 5)]
            //这个就是专门用来报错的
            [DataRow(1, -8)]
            public void TestMethod1(int x, int y)
            {
                var targetNum = x + y;
    
                var result = ConsoleApp1.Program.AddNum(x, y);
                Assert.AreEqual(targetNum, result);
            }
        }
    }
    

      测试结果(有错误)

      在这里插入图片描述
      在这里插入图片描述

      测试结果,通过

      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

      在这里插入图片描述

      正规的方法

      namespace TestProject1
      {
          [TestClass]
          public class UnitTest1
          {
              /// <summary>
              /// 测试方法
              /// </summary>
              /// <param name="x"></param>
              /// <param name="y"></param>
              /// <param name="target">按理来说最后一个值是测试的数据</param>
              [TestMethod]
              [DataRow(1, 2, 3)]
              [DataRow(3, 10, 13)]
              [DataRow(-3, 5, 2)]
              [DataRow(1, -8, 7)]
              public void TestMethod1(int x, int y, int target)
              {
      
                  var result = ConsoleApp1.Program.AddNum(x, y);
                  Assert.AreEqual(target, result);
              }
      
          }
      }
      

        在这里插入图片描述

        抛出异常

        namespace ConsoleApp1
        {
            public class Program
            {
                static void Main(string[] args)
                {
                    Console.WriteLine("Hello, World!");
                    Console.ReadLine();
                }
                /// <summary>
                /// 测试方法
                /// </summary>
                /// <param name="x"></param>
                /// <param name="y"></param>
                /// <returns></returns>
                public static int AddNum(int x, int y)
                {
                    //x<2就抛出异常
                    if(x < 2)
                    {
                        throw new Exception("抛出异常");
                    }
                    return Math.Abs(x + y);
                }
            }
        }
        
        

          异常也能看到
          在这里插入图片描述

          总结

          简单的测试用例还是要用一下的,毕竟总比整个项目运行之后出现问题要好。测试用例也不用多,找3-5个特例就可以了。

          代码补充:

          1.控制台程序:

          namespace ConsoleApp3
          {
              public class Program
              {
                  private static void Main(string[] args)
                  {
                      Console.WriteLine("Hello, World!");
                      Console.ReadLine();
                  }
                  /// <summary>
                  /// 测试方法
                  /// </summary>
                  /// <param name="x"></param>
                  /// <param name="y"></param>
                  /// <returns></returns>
                  public static int AddNum(int x, int y)
                  {
                      //x<2就抛出异常
                      if (x < 2)
                      {
                          throw new Exception("抛出异常");
                      }
                      return Math.Abs(x + y);
                  }
          
              }
          }
                 

          2.单元测试程序:

          namespace TestProject1
          {
              [TestClass]
              public class UnitTest1
              {
                  //[TestMethod]
                  //[DataRow(1, 2)]
                  //[DataRow(3, 10)]
                  //[DataRow(-3, 5)]
                  这个就是专门用来报错的
                  //[DataRow(1, 8)]
                  //public void TestMethod1(int x, int y)
                  //{
                  //    var targetNum = x + y;
          
                  //    var result = ConsoleApp3.Program.AddNum(x, y);
                  //    Assert.AreEqual(targetNum, result);
                  //}
          
                  [TestMethod]
                  [DataRow(1, 2, 3)]
                  [DataRow(3, 10, 13)]
                  [DataRow(-3, 5, 2)]
                  [DataRow(1, -8, 7)]
                  public void TestMethod1(int x, int y, int target)
                  {
                      var result = ConsoleApp3.Program.AddNum(x, y);
                      Assert.AreEqual(target, result);
                  }
              }
          }
          评论
          添加红包

          请填写红包祝福语或标题

          红包个数最小为10个

          红包金额最低5元

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

          抵扣说明:

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

          余额充值