zoukankan      html  css  js  c++  java
  • 第四次作业—单元测试

    我和队友学习了有关单元测试的知识以及示例后开展了工作,单元测试的过程如下:

    1:右键单击【解决方案】->左键单击【添加(D)】->【新建项目(N)】。

    2:由于程序是c++项目,所以依次选【Visual C++】->【测试】->【本机单元测试】->【填写自己测试的名称(自己定义)】->【确定】。

    3:输入测试的函数的来源文件和要测试的语句。

    AreEqual()中第一个参数是函数的返回值,第二个参数是函数及其输入。

    4:在此对所有的单元进行测试,依次点击【测试】->【调试】->【所有测试】。

    5针对测试进行修改,如下截取2附图,运行通过或者不通过的情况。根据不同情况我们应该对本函数进行修改。

    图一,未通过:

    图二,通过测试

    图三,多个测试依次次运行。

     要求1 对每个功能,先给出测试用例,然后再编码功能。请注意把测试用例视为功能需求完成的检验指标。 (40分)

    功能1:判断命令行输入的第二个参数是否是正整数。

    测试用例包括:“负数”“小数”“字符”“字符串”“带空格的数”等等。

    如果编译通过,则输入的不是正整数,若通过检验说明输入的是正数。

    功能2:判断等式中括号出现位置是否正确。

    测试用例包括:多组2维数据([0-8][0-7])。输出满足算是要求则说明括号排列 方式正确,不符合则说明错误。

    功能3:判断程序输出的值和算式正确的值是否相等。

    仅仅测试了其返回值。若返回1则说明正确,返回其他值说明错误(其实只能返回1,本测试用例用于测试“单元测试功能如何使用”)

    要求2 在博客报告测试用例全部fail 到 全部pass 的过程,报告事实 (fail到修改代码或者测试用例,到pass) 以及收获。 除了最初的框架,测试用例中存在一次性pass没有经过fail的,也报告一次性通过,给出如此优秀地实现了这部分功能的代码。(40分)

    整个单元测试,我们是按照功能来进行测试,就是每一个功能的函数截取出来,依次进行测试。截图如下:

     

    功能一:判断命令行输入的第二个参数是否是正整数。输入“非正整数”时,返回结果为fail;输入正整数时,显示pass。

     代码如下:

    /*
    判断是否是正整数
    */
    
    bool isInteger(char* s) {
        string str = s;
        stringstream sin(str);
        int a;
        char b;
        if (!(sin >> a))
            return false;
        if (sin >> b)
            return false;
        if (atoi(s) <= 0)
            return false;
        return true;
    }

    功能2:判断等式中括号出现位置是否正确。

    该功能采用的是手动写加括号的方式。用turnBracket()函数将数组转换成对应位置的括号。

    功能代码如下:

    string turnBracket(int n, int m) {
        switch (bracket_arr[n][m])
        {
        case 0:
            return "";
        case -1:
            return "(";
        case 1:
            return ")";
        case -2:
            return "((";
        case 2:
            return "))";
        default:
            break;
        }
    }
    
    手工模拟的括号数组:
    /*
    手动模拟加括号情况
    0 无
    -1 (
    1 )
    -2 ((
    2 ))
    */
    const int bracket_arr[9][8] = {
        { 0, 0, 0, 0, 0, 0, 0, 0 },
        { -1, 0, 0, 1, 0, 0, 0, 0 },
        { 0, 0, -1, 0, 0, 1, 0, 0 },
        { 0, 0, 0, 0, -1, 0, 0, 1 },
        { -1, 0, -1, 0, 0, 2, 0, 0 },
        { -2, 0, 0, 1, 0, 1, 0, 0 },
        { -1, 0, 0, 1, -1, 0, 0, 1 },
        { 0, 0, -2, 0, 0, 1, 0, 1 },
        { 0, 0, -1, 0, -1, 0, 0, 2 }
    };

    要求3 做好准备,在接下的一周你可能无法通过别人的测试用例。 (0分)

    要求4 使用coding.net做版本控制。checkin 前要求清理 临时文件、可执行程序,通常执行 build-clean可以达到效果。(5分)

  • 相关阅读:
    SpringBoot2.0 整合 Dubbo框架 ,实现RPC服务远程调用
    Spark家族:Win10系统下搭建Scala开发环境
    Linux系统:centos7下搭建Rocketmq4.3中间件,配置监控台
    Linux系统:Centos7环境搭建Redis单台和哨兵集群环境
    Linux系统:常用Linux系统管理命令总结
    Linux系统:centos7下安装Jdk8、Tomcat8、MySQL5.7环境
    Linux系统:centos7下搭建ZooKeeper3.4中间件,常用命令总结
    SpringBoot2.0 整合 Redis集群 ,实现消息队列场景
    SpringBoot2.0 基础案例(17):自定义启动页,项目打包和指定运行环境
    SpringBoot2.0 基础案例(16):配置Actuator组件,实现系统监控
  • 原文地址:https://www.cnblogs.com/zej87/p/7650019.html
Copyright © 2011-2022 走看看