此作业要求参见:https://edu.cnblogs.com/campus/nenu/2020Fall/homework/11243
仓库地址:https://e.coding.net/ayuyu/software-engineering-coursework/se-homework-20200924.git
结对伙伴:花名(朱航序)
语言:Java
测试框架:Junit
开发环境:IntelliJ IDEA 2020.2.1
要求1 对每个功能,先给出测试用例,然后再编码功能。请注意把测试用例视为功能需求完成的检验指标。 (40分)
截图:
功能一和功能二测试用例:
ID | 测试用例 | 预期结果 |
---|---|---|
1 | 输入 2+1-4*6 | -21 |
2 | 输入 1+2*4-6 | 3 |
3 | 输入(1+2)*4-6 | 6 |
4 | 输入2*(2-5)+8 | 2 |
功能三测试用例
ID | 测试用例 | 预期结果 |
---|---|---|
1 | 命令行参数 -c 20 | 输出四则运算及其结果,生成f4.txt |
2 | 命令行参数 -c 0 | 输出 题目数量必须是 正整数 |
3 | 命令行参数 -c -1 | 输出 题目数量必须是 正整数 |
4 | 命令行参数 -c 2.1 | 输出 题目数量必须是 正整数 |
要求2 在博客报告测试用例全部fail 到 全部pass 的过程,报告事实 (fail到修改代码或者测试用例,到pass) 以及收获。 除了最初的框架,测试用例中存在一次性pass没有经过fail的,也报告一次性通过,给出如此优秀地实现了这部分功能的代码。由2位同学中的一位发布博客提交到作业,指明自己的结对伙伴;另一位在作业中引用这一博客,指明自己的结对伙伴。(40分)
bug1:除数可能为0,程序抛出异常
解决方案:生成随机数时,不生成0
/**
* 根据输入的范围获取随机数
*
* @param max
* @return number
*/
public static int getNumber(int max) {
int number = 0;
number = (int) (Math.random() * max + 1);
return number;
}
bug2:命令行参数输入 "-c -1", 不输出“题目数量必须是 正整数”,而是结束运行。
解决方案:使用正则表达式后,再对命令行参数进行判断
Pattern pattern = Pattern.compile("^[-\+]?[\d]*$");
if (pattern.matcher(args[1]).matches()) {
int num = Integer.parseInt(args[1]);
if (num <= 0) {
System.out.println("题目数量必须是 正整数");
return;
}
try {
PrintWriter printWriter = new PrintWriter(new File("f4.txt"));
for (int i = 0; i < num; i++) {
bTree = new BinaryTree(3);
bTree.createBTree();
String result = bTree.CalAndVal();
System.out.printf("%-15s %s
", bTree.toString() + "=", result);
printWriter.printf("%-15s %s
", bTree.toString() + "=", result);
}
printWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
} else {
System.out.println("题目数量必须是 正整数。");
}
bug3:使用功能一和功能二时,程序输出四则运算,不输入答案,直接回车,程序抛出异常。
解决方案:对输入的字符串开头字符多几次判断
String input = sc.nextLine();
if (!input.startsWith("?") || input.length() < 2) {
System.out.println("在想想吧,答案似乎是" + result + "喔!");
continue;
}
input = input.substring(1);