需求分析
本次程序将原有四则运算器的计算模块单独抽离出来,写成一个独立的类.
然后再写一个测试模块对这个独立的计算模块进行全方位的测试
测试模块使用的是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) 必要的注释
在程序可读性的的判断标准中,注释同样重要。尤其是在团队合作中,大量的代码如果没有注释,会非常影响团队效率