• 结对编程2——单元测试(40,60,61)


    coding地址:https://coding.net/u/augur_g/p/homework-2/git/tree/master

    组员:201421123040 孙佳萱

             201421123060 谷天鹏

             201421123061 常昊

    需求分析

    本次程序将原有四则运算器的计算模块单独抽离出来,写成一个独立的类.
    然后再写一个测试模块对这个独立的计算模块进行全方位的测试
    测试模块使用的是php下的phpunit单元测试,ide为phpstorm

    单元测试框架

    计算模块

    计算模块剥离:

    <?php
    
    class Quiz {
        function simplify($mol, $den) {
            $Mol = $mol;
            $Den = $den;
            if($den == 0){
                return "分母不为0";
            }
                while ($den) {
                    $temp = $mol % $den;
                    $mol = $den;
                    $den = $temp;
                }
                $temp = $mol;
                if ($temp != 0) {
                    $mol = $Mol / $temp;
                    $den = $Den / $temp;
                    if ($den == 1) {
                        return $mol;
                    } else {
                        return "$mol/$den";
                    }
                }
            }
    
        function getQuiz($Fra_a,$Fra_b,$Fra_c,$Fra_d,$operator) {
            $answer = 0;
            switch ($operator) {
                case '+':
                    $mol = ($Fra_a * $Fra_d) + ($Fra_c * $Fra_b);
                    $den = $Fra_b * $Fra_d;
                    $answer = $this->simplify($mol, $den);
                    break;
                case '-':
                    $mol = ($Fra_a * $Fra_d) - ($Fra_c * $Fra_b);
                    $den = $Fra_b * $Fra_d;
                    $answer = $this->simplify($mol, $den);
                    break;
                case '×':
                    $mol = $Fra_a * $Fra_c;
                    $den = $Fra_b * $Fra_d;
                    $answer = $this->simplify($mol, $den);
                    break;
                case '÷':
                    $mol = $Fra_a * $Fra_d;
                    $den = $Fra_b * $Fra_c;
                    $answer = $this->simplify($mol, $den);
                    break;
                default:
                    $answer="error";
                    echo $answer;
                    break;
            }
            return $answer;
        }
    }

    测试如下功能

    1.分数加减乘除运算

    $Test = new Quiz();
            $this->assertEquals('104/235',$Test->getQuiz(2,5,8,188,'+'));
            $this->assertEquals('1',$Test->getQuiz(3,6,3,6,'+'));
            $this->assertEquals('1/2',$Test->getQuiz(6,6,3,6,'-'));
            $this->assertEquals('21/4',$Test->getQuiz(9,6,7,2,'×'));
            $this->assertEquals('40/21',$Test->getQuiz(8,3,7,5,'÷'));

    2.分数化简运算

    $this->assertEquals('21/4',$Test->simplify(42,8));

    3.除0异常处理以及符号错误处理

    $this->assertEquals('error',$Test->getQuiz(3,6,3,6,'?'));
    
    $this->assertEquals('分母不为0',$Test->simplify(42,0));

    测试结果输出

    这里断言故意写错,输出结果如下

    正确输出

    顺利通过功能的测试。

    代码覆盖率查看

    php下通过phpunit 与 Xdebug扩展完成代码覆盖率的查看以及报告生成

    ide内部查看代码覆盖率

    通过命令行生成html代码覆盖率报告

    phpunit --coverage-html ./coverage ./QuizTest.class.php

    PSP自测(单位为百分比)

    个人小结:

    第一次接触单元测试,感觉还是很有意义的,单元测试可以对代码进行检查,找到哪些代码是错误的,有助于更好的修正代码。但是对这一方面还是有些陌生,这次的作业和队友一起学习了很多,很有收获,之后会更进一步的学习。

    体会:

    (1)良好的设计

    良好的设计对项目来说是不可或缺的,在进行程序设计之前,先想好设计的内容、功能以及可能出现的问题,在接下来的编程工作中会减少很多工作量。

    (2)编码规范

    编码的规范性在结对编程中显得尤为重要,规范的代码不仅可以方便队友阅读,还可以在一段时间后重温代码时帮助我们更快速的理解,所以,一定要在编写代码前规范好代码的书写。

    (3)必要的注释

    代码中的注释不仅提高了代码的可读性,同时也可以提高自己检查代码错误的速度。

    团队照片:

          

  • 相关阅读:
    51nod1381 硬币游戏
    51nod1381 硬币游戏
    51nod1384 全排列
    LOJ P10130 点的距离 题解
    POJ P1985 Cow Marathon 题解
    求树的直径(两种方法)
    洛谷 P3518 [POI2011] SEJ-Strongbox 题解
    洛谷 UVA12101 Prime Path 题解
    POJ P2251 Dungeon Master 题解
    POJ P3009 Curling 2.0 题解
  • 原文地址:https://www.cnblogs.com/sjxuan/p/6636768.html
Copyright © 2020-2023  润新知