博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
结对编程2——单元测试
阅读量:7058 次
发布时间:2019-06-28

本文共 3953 字,大约阅读时间需要 13 分钟。

201421123003 黄建英      201421123004 黄美海

码市链接:https://coding.net/u/hmhhh/p/UnitTest/git/tree/master

a.需求分析:

1.把计算模块提取出来单独创建一个类
2.通过单元测试代码,测试加减乘除功能
3.通过单元测试代码,测试计算类对于各种参数的支持:

a.输入是有错误的,例如 “1 ++ 2”,

b.在数值范围是 -1000 .. 1000 的时候,传进去 “10000 + 32768”,

c. 或者是 “ 248 / 0” 怎么办?

b.设计测试框架, 模拟测试数:(项目以java语言进行开发,使用junit4进行测试)

1.整数的加减乘除功能测试

 

2.分数的加减乘除功能测试

 

3.输入是有错误的,例如 “1 ++ 2”

 

4.数值超出范围测试,在数值范围是 -1000 .. 1000 的时候,传进去 “10000 + 32768”(数组溢出)

 

5.结果除0测试,例如:“ 248 / 0” (除数为0)

 

6.代码覆盖率

问题及解决

Q:不知道如何使用junit4和生成代码覆盖率
A:通过查阅相关资料学习
Q:对于一些特殊情况(如数组越界、除数不为0)的解决存在困难
A:最后用if/else排除异常

代码展示

CalcFunction.java部分代码

public class CalcFunction {    private String result;    public void calc(String s){        if(s.indexOf("+")>-1 && s.indexOf("+")< 2){            add(s);        }else if(s.indexOf("-")>-1 && s.indexOf("-")< 1){            substract(s);        }else if(s.indexOf("×")>-1 && s.indexOf("×")< 1){            multiply(s);        }else if(s.indexOf("÷")>-1 && s.indexOf("÷")< 1){            divide(s);        }else System.out.println("error!Not allow like 1++1!");        System.out.println(getResult());    }    public void add(String s)    {        String[] str=s.split("[+]");        if(str[0].indexOf("/")>-1 || str[1].indexOf("/")>-1)        {            String[] str1=str[0].split("[/]");            String[] str2=str[1].split("[/]");            result =Reduction(((Integer.parseInt(str1[0])*Integer.parseInt(str1[1]))+(Integer.parseInt(str2[0])*Integer.parseInt(str1[1]))),(Integer.parseInt(str1[1])*Integer.parseInt(str2[1])));          }        else{            result = Integer.parseInt(str[0])+Integer.parseInt(str[1])+"";                  }    }    public void substract(String s)    {        String[] str=s.split("[-]");    if(str[0].indexOf("/")>-1 || str[1].indexOf("/")>-1)    {        String[] str1=str[0].split("[/]");        String[] str2=str[1].split("[/]");        result =Reduction(((Integer.parseInt(str1[0])*Integer.parseInt(str2[1]))-(Integer.parseInt(str2[0])*Integer.parseInt(str1[1]))),(Integer.parseInt(str1[1])*Integer.parseInt(str2[1])));    }    else{   if( Integer.parseInt(str[0])<1000&&Integer.parseInt(str[1])<1000&&Integer.parseInt(str[0])>-1000&&Integer.parseInt(str[1])>-1000)        {result = Integer.parseInt(str[0])+Integer.parseInt(str[1])+"";}               else System.out.println("error!overrun!");}}public void multiply(String s){    String[] str=s.split("[×]");    if(str[0].indexOf("/")>-1 || str[1].indexOf("/")>-1)    {        String[] str1=str[0].split("[/]");        String[] str2=str[1].split("[/]");        result =Reduction(Integer.parseInt(str1[0])*Integer.parseInt(str2[0]),Integer.parseInt(str1[1])*Integer.parseInt(str2[1]));      }    else{result = Integer.parseInt(str[0])*Integer.parseInt(str[1])+"";}}public void divide(String s){    String[] str=s.split("[÷]");        if(str[0].indexOf("/")>-1 || str[1].indexOf("/")>-1)    {        String[] str1=str[0].split("[/]");        String[] str2=str[1].split("[/]");        if(Integer.parseInt(str1[1]) != 0 && Integer.parseInt(str2[1]) != 0)        {            result =Reduction(Integer.parseInt(str1[0])*Integer.parseInt(str2[1]),Integer.parseInt(str1[1])*Integer.parseInt(str2[0]));             }else System.out.println("error!Divisor cannot be zero!");     }else{        if(Integer.parseInt(str[1]) != 0)        {            result = Integer.parseInt(str[0])/Integer.parseInt(str[1])+"";                          }else System.out.println("error!Divisor cannot be zero!");              }}public String getResult(){    return result;} }

c.小结与感受

虽然这次的作业是在前次的代码上继续改进,从而增加功能,但是难度的增加还是让我们在实现的过程中倍觉艰难。比如:因为之前写的代码没有模块化,而且有些计算是在主函数内进行的所以我们在进行计算模块的提取有一些难度、对于输入异常考虑的不够全面、数组溢出的问题也没有考虑到。但是两个人商量着,也查询了一些资料,最终解决了这些问题。有一个合作伙伴,确实比自己独自思考效率来的高。

d.体会

(1) 良好的设计

对于代码的功能事先要做好明确清晰的模块化设计。

(2) 编码规范

之前的代码对于代码模块化做的不是很好,搀杂在主函数里,不易于提取与修改。

(3) 必要的注释

之前有注释,以及队友的相互指导,能加快对之前代码的理解

总的来说,一加一大于二,两个人能相互监督不拉进度,相互提出问题,相互解决问题,加快进度与效率,结对编程是很好的合作方式。

结对照片:

 

psp

 

转载于:https://www.cnblogs.com/aidabai/p/6639669.html

你可能感兴趣的文章
Linux安装gitlab
查看>>
十四条令PHP初学者头疼问题大总结(1)
查看>>
MySQL的备份与还原
查看>>
加密U盘专业加密芯片方案
查看>>
js比较字符数组元素是否重复
查看>>
码客Online:HTC Zoe是什么功能?
查看>>
windows server 2012 r2 搭建企业文件共享存储
查看>>
我的友情链接
查看>>
[20180606]如何dump数据库里面的汉字.txt
查看>>
C#面向对象(四)虚方法实现多态
查看>>
day3-Nfs
查看>>
函数栈帧(用汇编来剖析)
查看>>
C++中const用法总结(转)
查看>>
给Windows 2003文件夹设置权限
查看>>
Android x86+ADT
查看>>
算法53----换钱的最小次数和方法数【动态规划】
查看>>
Python爬虫1-----urllib模块
查看>>
深入理解Java虚拟机(七)字节码执行引擎(栈帧、动态连接、方法调用)
查看>>
<input>标签中获得鼠标与否的样式变化——js实现
查看>>
Percona XtraDB Cluster 的一些使用限制(PXC 5.7)
查看>>