20200924-3 单元测试,结对

此作业要求参见: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\n", bTree.toString() + "=", result);
            printWriter.printf("%-15s %s\n", 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);

要求3 做好准备,在接下的一周你可能无法通过别人的测试用例。 (0分)

要求4 使用coding.net做版本控制。checkin 前要求清理 临时文件、可执行程序,通常执行 build-clean可以达到效果。(5分)

posted @ 2020-10-05 19:46  阿鱼u  阅读(91)  评论(0编辑  收藏  举报