您的位置:首页 > 编程语言

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

2017-03-29 14:29 375 查看
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)必要的注释

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

团队照片:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: