如何在vs中对C#代码进行单元测试

欢迎加入BIM行业开发交流1群 群号:711844216

一、背景

小伙伴们在使用C#的时候,可能会有单元测试的需要,本文就介绍如何在vs中使用单元测试。

二、基本认识

2.1什么是单元测试

单元测试是对类中方法正确性的测试。

  1. 针对类中的方法
  2. 正确性的测试

2.2为什么要进行单元测试

在我们写代码的时候,很多时候都要去判断一个函数写的是否正确,用单元测试,会很方便的帮助我们实现这个目标。

2.3如何进行单元测试

请小伙伴们参见本文第三部分

三、单元测试例子

3.1传统测试

我们为了验证类中某个函数的正确型,经常会用控制台去测试。

//传统测试方法,通过控制台测试增加函数是否相等

using System;

namespace ClassForTest
{
    //传统测试方法
    class Program
    {
        static void Main(string[] args)
        {
            MyClass myClass = new MyClass();
            if (5 == myClass.Add(1, 4))
                Console.WriteLine("函数正确");
            else
                Console.WriteLine("函数不正确");
        }
    }
    public class MyClass
    {

        public int Add(int x, int y)
        {
            return x + y;
        }
        public int Multiply(int x, int y)
        {
            return x * y;
        }

    }

}

小伙伴们可以试想,如果我们这个时候,也需要对Multiply函数进行同时进行测试,那么主函数就要修改或者重新在一个类中写另外一个主函数。等函数多了时,这样会很麻烦。
这个时候,我们的单元测试兄弟,就登场了(大家欢迎)。

3.2单元测试实战

首先,需要测试的类,不变,就是上面中的MyClass类。
接着,我们在Vs中新建一个单元测试的项目,如下图
在这里插入图片描述
然后在这个单元测试项目中,vs会自动为我们生成单元测试的这个类

using ClassForTest;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using TestClass;
namespace UnitTestProject
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void TestMethod1()
        {
            //准备
            MyClass myClass =new MyClass();
            //设定测试用例
            int a = 1;
            int b = 2;
            //执行要测试的程序
            int actual = myClass.Add(a, b);
            int excepted = 3;
            //断言,看结果与预期结果是否一样
            Assert.AreEqual(excepted,actual,"加法不正确,请核对");
        }
        [TestMethod]
        public void TestMethod2()
        {
            //准备
            MyClass myClass = new MyClass();
            //设定测试用例
            int a = 1;
            int b = 2;
            //执行要测试的程序
            int actual = myClass.Multiply(a, b);
            int excepted = 3;
            //断言,看结果与预期结果是否一样
            Assert.AreEqual(excepted, actual, "乘法不正确,请核对");
        }

    }
}

  1. 准备,这部分通常用于需要测试的类的实例化
  2. 设定测试用例,就是我们提供的测试的参数
  3. 需要测试的函数,就是我们上面类中的函数
  4. 断言(Assert),看结果与我们预期的结果是否吻合

到这里,我们的单元测试代码就写好了。接下来,我们开始测试。
在测试窗口中选中测试资源管理器。在这里插入图片描述
然后在vs的左边,我们可以看到这个界面,鼠标放在我们需要测试的加法上,然后右键,运行所选测试
在这里插入图片描述
结果如下
在这里插入图片描述
可以看到测试通过。
接着对乘法进行测试
在这里插入图片描述
由于1*2为2,但是我们给的期待值是3,所以,测试不通过。
好了到这里,单元测试就给小伙伴们介绍完毕了。

四、注意事项

1.单元测试是软件开发中的一种思想,不止.net平台有,其他平台都有对应的框架,基本思想是一样的。
2.我们这个示例是在.net Framwork下面进行的,如果测试的类库是.net core的,那么我们的单元测试项目可以选为xUnit测试项目。
3.能否在单元测试中,像控制台一样使用 Console.WriteLine()输出结果呢?当然可以,如果单元测试代码中有Console.WriteLine(),那么在选中左侧单元测试的函数,在左下角会看到一个OutPut,然后点击它,就可以看到输出的结果了。
4.本篇文章只对一条数据进行了测试,在实际开发中,会需要对大量的数据进行单元测试,博主在下篇文章中将为小伙伴们介绍数据驱动单元测试的例子。
5.大家好,我是黑夜の骑士,欢迎大家关注我的博客,笔者将持续输出revit二次开发以及编程干货。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值