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

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

2017-03-28 21:51 429 查看
由于班级人数为奇数,故我们组员有三人,分别是孙佳萱(201421123040),谷天鹏(201421123060),常昊(201421123061)

需求分析

这次项目我们将上一次的项目四则运算中的计算模块独立出来,另写了一个独立的类。

再利用一个测试模块对计算模块进行测试,测试模块使用的是php下的phpunit单元测试,ide为phpstorm

测试框架

计算模块

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;
}
}

测试

分数的四则运算

$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,'÷'));

分数化简

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

异常处理(除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






小结与感受:通过测试,是否有效发现了程序计算模块的问题,并给予改进?

经过测试,计算模块基本没有问题,一些小的问题也已经改进。

因为之前没有接触过单元测试,查阅了很多资料,经过很多次的修改,对单元测试中的断言有了一定的了解。

但毕竟是第一次接触,不是很熟练,自己将会多加练习。

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

(1) 良好的设计

设计较之前更加简洁清晰,更加完善了

(2) 编码规范

代码可读性较强,成员之间没有因此事产生问题

(3) 必要的注释

必要注释都有标明

PSP



结对照片





Coding地址

https://coding.net/u/augur_g/p/homework-2/git
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: