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

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

成员:201421123005 谢晓萍  201421123030 陈宇杰

 代码地址:

1.需求分析

(1)通过单元测试代码,测试加法是否能正确工作;

(2)通过单元测试代码,测试加减乘除功能。

(3)通过单元测试代码,测试计算类对于各种参数的支持:

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

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

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

d. 怎么告诉函数的调用者 “你错了”? 把返回的字符串定义为 “-1” 来表示?

e. 那么如果真的计算结果是 “-1” 又怎么处理呢?

 

2.设计测试框架, 模拟测试数据

 

加减测试:

 

乘除测试:

 

混合运算测试(带括号):

 

括号的嵌套:

 

括号输入不完整:

 

输入错误:(如输入1++2)

 

0的情况:(结果定义为无穷)

 

以下是运算模块的代码:

 

1 package package1;  2   3 import java.util.ArrayList;  4 import java.util.List;  5 public class autoCalculate {  6       7       8     public List
list; 9 public autoCalculate(String input) { 10 char[] ins = input.toCharArray(); 11 list = new ArrayList
(); 12 String str = ""; 13 14 for (int i = 0; i < ins.length; i++) { 15 16 if (ins[i] == '-' && ins[i + 1] >= '0' && ins[i + 1] <= '9' 17 && (i == 0 || ins[i - 1] == '(')) { 18 str += ins[i]; 19 continue; 20 } 21 22 if (ins[i] == '-' && ins[i + 1] == '('&&(i==0||ins[i-1]!=')')) { 23 list.add("0"); 24 list.add("-"); 25 list.add("1"); 26 list.add("*"); 27 continue; 28 } 29 if (!checkFuhao(ins[i])) { 30 str += ins[i]; 31 if (i == ins.length - 1) { 32 list.add(str); 33 } 34 } else { 35 if (!"".equals(str)) { 36 list.add(str); 37 str = ""; 38 } 39 list.add(ins[i] + ""); 40 } 41 42 if (i>0&&ins[i]=='('&&ins[i-1]>='0'&&ins[i-1]<='9') { 43 list.add(list.size()-1,"*"); 44 } 45 } 46 47 } 48 49 String yunsuan(List
list) { 50 try { 51 int zuo = haveZuoKuoHao(list); 52 if (zuo != -1) { 53 int you = lastYouKuohao(list, zuo); 54 List
l = removeKuohao(list, zuo, you); 55 addKuohao(list, yunsuan(l), zuo); 56 yunsuan(list); 57 } 58 int chengchu = haveChengChu(list); 59 if (chengchu != -1) { 60 chengchuYunsuan(list, chengchu); 61 } else { 62 jiajianYunsuan(list); 63 } 64 if (list.size() == 1) { 65 return list.get(0); 66 } 67 } catch (Exception e) { 68 System.out.println("error"); 69 System.exit(0); 70 } 71 return yunsuan(list); 72 } 73 74 public void jiajianYunsuan(List
list) { 75 for (int i = 0; i < list.size(); i++) { 76 if (list.get(i).equals("+")) { 77 double last = Double.parseDouble(list.remove(i + 1)); 78 list.remove(i); 79 double first = Double.parseDouble(list.get(i - 1)); 80 list.set(i - 1, last + first + ""); 81 i--; 82 } 83 if (list.get(i).equals("-")) { 84 double last = Double.parseDouble(list.remove(i + 1)); 85 list.remove(i); 86 double first = Double.parseDouble(list.get(i - 1)); 87 list.set(i - 1, first - last + ""); 88 i--; 89 } 90 } 91 92 } 93 94 public void chengchuYunsuan(List
list, int chengchu) { 95 double last = Double.parseDouble(list.remove(chengchu + 1)); 96 String fuhao = list.remove(chengchu); 97 double first = Double.parseDouble(list.get(chengchu - 1)); 98 if (fuhao.equals("*")) { 99 list.set(chengchu - 1, first * last + "");100 }101 if (fuhao.equals("/")) {102 list.set(chengchu - 1, first / last + "");103 }104 105 }106 public int haveChengChu(List
list) {107 for (int i = 0; i < list.size(); i++) {108 if (list.get(i).equals("*") || list.get(i).equals("/")) {109 return i;110 }111 }112 return -1;113 }114 115 public List
removeKuohao(List
list, int zuo, int you) {116 List
l = new ArrayList
();117 list.remove(you);118 list.remove(zuo);119 for (int i = zuo; i <= you - 2; i++) {120 l.add(list.remove(i));121 i--;122 you--;123 }124 return l;125 }126 127 public int haveZuoKuoHao(List
list) {128 for (int i = 0; i < list.size(); i++) {129 if (list.get(i).equals("(")) {130 return i;131 }132 }133 return -1;134 }135 public int lastYouKuohao(List
list, int zuo) {136 int zuoIndex = 1;137 int youIndex = 0;138 for (int i = zuo + 1; i < list.size(); i++) {139 if (list.get(i).equals("(")) {140 zuoIndex++;141 }142 if (list.get(i).equals(")")) {143 youIndex++;144 }145 if (zuoIndex == youIndex) {146 return i;147 }148 }149 return -1;150 }151 public boolean checkFuhao(char a) {152 if (a == '+' || a == '-' || a == '*' || a == '/' || a == '('153 || a == ')') {154 return true;155 }156 return false;157 }158 159 public void addKuohao(List
list, String yunsuan, int zuo) {160 list.add(zuo, yunsuan);161 162 }163 164 }

 

 

代码覆盖率:

 

结队照片:

psp

PSP2.1

Personal Software Process Stages

Estimated timemin

actual timemin

Planning

计划

11

6

· Estimate

估计这个任务需要多少时间

120

125

Development

开发

70

90

· Analysis

需求分析 (包括学习新技术)

20

30

· Design Spec

生成设计文档

4

5

· Design Review

设计复审

10

5

· Coding Standard

代码规范

4

5

· Design

具体设计

20

25

· Coding

具体编码

40

50

· Code Review

代码复审

10

15

· Test

测试(自我测试,修改代码,提交修改)

10

15

Reporting

报告

10

12

·

测试报告

5

5

·

计算工作量

3

5

·

并提出过程改进计划

4

4

 

 小结:

1.谢晓萍同学很耐心,遇到不会的问题会愿意花时间去自己百度并学习(例如,如何在eclipse上安装使用eclemma来测试代码覆盖率)。这点是我所欠缺的,两人结队编程起到了1+1>2的效果。

2.之前的java规范意识太弱,导致这次花了一些时间在重新模块化上,拖慢了整体进度。不过这也增加了我们的契合度,让我们合作更加顺利。

 

转载于:https://www.cnblogs.com/cococok2/p/6640318.html

你可能感兴趣的文章
PAT 2-10. 海盗分赃(25)
查看>>
网络攻防_实验二+
查看>>
Quick-Cocos2d-x初学者游戏教程(十) ---------------- 添加游戏障碍物
查看>>
Maven环境下MyBatisGenerator 配置
查看>>
20180925-6 四则运算试题生成
查看>>
django 验证码实现
查看>>
HTML - 网页特殊字符大全(转)
查看>>
sift算法中翻译的第11页中比值问题
查看>>
Unity3D研究院编辑器之不实例化Prefab获取删除更新组件(十五)
查看>>
centos7搭建FTP服务器
查看>>
HDU-4033 Fruit Ninja 几何 二分搜索
查看>>
POJ-1057 FILE MAPPING 恶心模拟
查看>>
SpringMVC 之数据转换和国际化
查看>>
(Struts)ActionForm类及表单数据验证
查看>>
【php】phpExcel使用教程,如何导出excel表格
查看>>
PHP获取二维数组中某一列的值集合
查看>>
draft数据保存
查看>>
python自动化测试(2)-自动化基本技术原理
查看>>
iOS之网络数据下载和JSON解析
查看>>
ios图片剪切
查看>>