zoukankan      html  css  js  c++  java
  • 结对编程2——单元测试

    需求分析

    本次程序将原有四则运算器的计算模块单独抽离出来,写成一个独立的类.
    然后再写一个测试模块对这个独立的计算模块进行全方位的测试
    测试模块使用的是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

    个人总结

      之前计算模块使用javascript编写,由于我们小组比较熟悉php估计该模块改写为php语言并利用phpunit完成了这次单元测试作业,之前我们并没有接触过单元测试,第一次使用对单元测试,断言,测试类等等名词都比较陌生,跟开心能有这次机会接触到单元测试。同时在这个结对编程的过程中也学习到了很多知识。单元测试仍然不熟悉,对测试类的编写掌握的还不好,日后定多加练习。

    在隔了一周之后再看之前的代码,是否更能体会到下面这些东西

    (1) 良好的设计
    良好的设计是程序好坏的重要判断标准之一,良好的设计代表了高效的代码效率和不错的用户体验。

    (2) 编码规范
    编码规范在一开始有做,后来逐渐完善。编码规范设计到程序的可读性,没有编码规范的程序是不合格的。

    (3) 必要的注释
    在程序可读性的的判断标准中,注释同样重要。尤其是在团队合作中,大量的代码如果没有注释,会非常影响团队效率

    PSP自测(单位为百分比)

    coding:oding.net/u/augur_g/p/homework-2/git

  • 相关阅读:
    eclipse新建工作空间后的常用设置
    Maven将代码及依赖打成一个Jar包的方式
    MemCache详细解读(转)
    memcached单机或热备的安装部署
    memcache的基本操作
    Java中int和String类型之间转换
    Linux中普通用户配置sudo权限(带密或免密)
    Java字符串中常用字符占用字节数
    java各种数据类型的数组元素的默认值
    validator
  • 原文地址:https://www.cnblogs.com/augurG/p/6628941.html
Copyright © 2011-2022 走看看