拥有正确的编码观念:单元测试(UnitTest)的重要性

在做事前建立一个正确的观念,是非常重要的,很多公司只注意制度却忽略了这一点,我之前待过的三家公司,都没有自己的研发部门,大家写代码的时候都各自为战,效率和性能都无法保证,因为都只靠个人能力做事,这不是一种正确的方法。编码很重要的一件事情就是单元测试,但很多公司都忽略了。试想一下,我们写代码无非分三样:主流程、接口、实现类。主流程只是一个大的业务流程,不容易出错,而且在接口未实现前,我们可以写一个返回假数据的实现类,来先测试主流程。实现类才是具体业务,最复杂也最容易出错,这才是测试的重点。

如果仅凭个人的经验的话,开发从菜鸟到大神可能会经历以下阶段:

1、全部写完代码,再运行程序,进行整个集成测试

2、写完主流程和子函数后,再打断点,再远行程序,不断对各个模块单元测试,最后进行整个集成测试

3、先写完主流程,再接着测试主流程,然后写子函数,再用UnitTest测试项目单元测试子函数,最后再进行整个集成测试

上面的三种阶段很多人都会经历过,第二阶段跟第三阶段已经很接近了,但第三阶段比第二阶段效率要高很多,因为写完测试项目之后,就可以进行全面的自动化测试了。

好了,废话不多说,观念有了,我们现在要真正开始动手:

现在,我以C#项目测试为例,讲解一个简单的UnitTest测试例子,再看看,它是如何提高我们的测试效率的。

我们要实现一个功能:计算一个数组的最大值和最小值的和

先写主流程:

        static void Main(string[] args)
        {
            IMaxValue mm = new test();
            int[] list = {1, 2, 3, 4, 5, 6, 7, 8, 9};

            int max = mm.Max(list);
            int min = mm.Min(list);

            Console.WriteLine(max+min);
            Console.Read();
        }
这是我们写的初步接口:

    interface IMaxValue
    {
        int Max(int[] list);
        int Min(int[] list);
    }
是实现类

    public class MaxValue : IMaxValue
    {
        // 将要测试的方法
        public int Max(int[] list)
        {
            if (list == null)
                return -1;

            int len = list.Length;
            if (len == 0)
                return list[0];

            int i, max = int.MinValue;
            for (i = 0; i < len; i++)
            {
                if (list[i] > max)
                    max = list[i];
            }

            return max;
        }

        public int Min(int[] list)
        {
            return 0;
        }
    }
然后我们要测试主流程,因此我们写一个假的实现类:   

    class test:IMaxValue
    {
        public int Max(int[] list)
        {
            return 9;
        }
        public int Min(int[] list)
        {
            return 1;
        }
    }
我们跑完主流程测试没问题后:

   

然后开始进行单元测试:

选择菜单》测试》新增测试》单元测试,添加自己的单元测试类:


选择对应的测试实现类:


我们修改测试方法的输入值和返回期望值:


最后,点击左上角的工具栏按钮就可以进行单元测试了


怎么样,是不是很方便,由最小的函数做起,可以保证你的项目代码的质量。


断言API

    Assert类的静态方法如下,其中常用的包括AreEqual、AreNotEqual、AreSame、IsNull、IsTrue、Inconclusive和Fail

alt

   针对集合类型的断言方法:

alt

   针对字符串类型的断言方法:

alt

 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值