结对编程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

转载于:https://www.cnblogs.com/augurG/p/6628941.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ChatGPT结对编程是一种将两个程序员合作编写代码的技术。这种技术可以提高编写代码的效率和质量,同时也可以提高两位程序员的技能水平。以下是ChatGPT结对编程的步骤: 1. 首先,找到一个合适的编程伙伴。最好是一个有一定编程经验的人,但如果你是新手,也可以与另一个新手合作。 2. 确定你们编写的代码项目。你们可以选择一个共同感兴趣的项目或者一个有挑战性的项目。确保你们都对项目有一定的理解。 3. 确定你们的角色。一个人可以担任主要代码编写者,另一个人可以担任代码审核者。这样可以确保代码的质量。 4. 确定编程环境。你们可以使用一个共同的编程环境,如Visual Studio Code或者Atom。也可以使用在线编程环境,如CodePen或JSFiddle。 5. 开始编写代码。一个人负责编写代码,另一个人负责审核代码。在编写代码的过程中,你们可以随时通过聊天工具进行交流和讨论。 6. 定期进行代码审核。定期进行代码审核可以确保代码的质量。你们可以定期的分享代码,并相互审核对方的代码。 7. 完成项目并进行总结。完成项目后,你们可以总结你们的经验和教训,并提出改进建议。这将有助于你们以后更好的编写代码。 总之,ChatGPT结对编程是一种非常有用的技术,可以提高编写代码的效率和质量。通过合作编写代码,你们可以相互学习,相互支持,以及增强你们的编程技能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值