第四次作业—单元测试

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

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分)

原文地址:https://www.cnblogs.com/zej87/p/7650019.html