举例理解单元测试

 

    周一上课时老师讲了关于单元测试的内容,下面是我对单元测试的理解。

 

    单元测试是由程序员自己来完成,最终受益的也是程序员自己。可以这么说,程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。执行单元测试,就是为了证明这段代码的行为和我们期望的一致。那么单元测试需要测试哪些部分呢?

 

    单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。单元测试对象也就是软件设计的最小单位,即模块,函数,类或者子过程等等。模块检测分为五块:独立路径,出错处理,模块接口,局部数据结构,边界条件。

 

#include<stdio.h>
#include<iostream>

int Largest(int list[],int length)
{
    int i;
    int max;
    max=list[0];
    if(length==0)
    {
        printf("输入的数组为空\n");
        return -444;
    }
    for(i=0;i<length;i++)
    {    
        if(list[i]=='.')
        {
            printf("输入的数不是整数\n");
            return -4444;
        }
        if(list[i]>max)
        {
            max=list[i];
        }       
    }
    return max;
}
void main()
{
    int i;
    int len;
    int max;
    int  a[100];
    printf("若输出数组为空且最大值输出-444或者最大值输出为-4444,说明存在异常\n");
    for(int j=0;j<10;j++)
    {
        printf("\n请输入数组的长度:");
        scanf("%d",&len);
        printf("请输入%d个整数:\n",len);
        for(i=0;i<len;i++)
        {
            scanf("%d",&a[i]);    
        }
        max=Largest(a,len); 
        printf("此数组的最大值max=%d\n",max);     
    }
    system("pause");
}

 

上课时老师给的函数,如下:

int Largest(int list[],int length)
{
    int i,max;
    for(i=0;i<(length-1);i++)
    {
        if(list[i]>max)
        {
            max=list[i];
        }
    }
    return max;
  }

测试这段代码,经过多次思量,写出了开始那段测试代码,运行结果截图如下:

    这次的单元测试,有很多细节之处,比如,max没有初始化,length的边界不对。测试代码里,加了数组是否为空的判断,还有是否是整形数组的判断。当然还有很多没有实现的。比如一个一个输入比较麻烦,如果让它读一个文档会比较省力。这个想法因为时间关系,还没有实现。总之,学到了一些以前没有注意过的知识。

原文地址:https://www.cnblogs.com/xiefengjiao/p/3590437.html