zoukankan      html  css  js  c++  java
  • 结对编程2——单元测试

    康建灿 201421123017   郑怀勇 201421123016

     结对编程2——单元测试  结对编程

    需求分析

    1. 把计算模块提取出来,单独创建一个类。
    2. 针对提取出来的计算类的接口函数做单元测试。

    实验要求:

    1. 通过单元测试代码,测试加法是否能正确工作;
    2. 通过单元测试代码,测试加减乘除功能。
    3. 通过单元测试代码,测试计算类对于各种参数的支持:

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

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

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

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

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

    测试模块:

    1. 通过单元测试代码,测试加法是否能正确工作:
        public void testAdd() {
            CalcFunction.add("3+2");
            assertEquals("5",CalcFunction.getResult());
            CalcFunction.add("2/3+1/3");
            assertEquals("1",CalcFunction.getResult());
            
            
        }

    1. 通过单元测试代码,测试加减乘除功能。
        public void testAdd() {
            CalcFunction.add("3+2");
            assertEquals("5",CalcFunction.getResult());
            CalcFunction.add("2/3+1/3");
            assertEquals("1",CalcFunction.getResult());
           // CalcFunction.add("1++2");
            //CalcFunction.add("10000+32768");
            //assertEquals("out of range",CalcFunction.getResult());
            
            
        }
    
        @Test
        public void testSub() {
            CalcFunction.sub("3-2");
            assertEquals("1",CalcFunction.getResult());
            CalcFunction.sub("2/3-1/3");
            assertEquals("1/3",CalcFunction.getResult());
        }
    
        @Test
        public void testMul() {
            CalcFunction.mul("3*2");
            assertEquals("6",CalcFunction.getResult());
            CalcFunction.mul("2/3*1/3");
            assertEquals("2/9",CalcFunction.getResult());
        }    
            @Test
        public void testDiv() {
            CalcFunction.div("3÷2");
            assertEquals("3/2",CalcFunction.getResult());
            CalcFunction.div("2/3÷1/3");
            assertEquals("2",CalcFunction.getResult());
            CalcFunction.div("248÷0");
            assertEquals("zero_error",CalcFunction.getResult());
        }

     

     输入是有错误的,例如 “1 ++ 2”:会传出error:

        @Test
        public void testAdd() {
            CalcFunction.add("1++2");
    
            assertEquals("error",CalcFunction.getResult());
            
            
        }

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

        public void testAdd() {
            CalcFunction.add("10000+32768");
            assertEquals("out of range",CalcFunction.getResult());
            
            
        }

     

    或者是 “ 248 / 0” 怎么办?报错传出zero_error:

        @Test
        public void testDiv() {
            CalcFunction.div("3÷2");
            assertEquals("3/2",CalcFunction.getResult());
            CalcFunction.div("2/3÷1/3");
            assertEquals("2",CalcFunction.getResult());
            CalcFunction.div("248÷0");
            assertEquals("zero_error",CalcFunction.getResult());
        }

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

    输入是有错误的,会传出error:

        @Test
        public void testAdd() {
            CalcFunction.add("1*&2");
    
            assertEquals("error",CalcFunction.getResult());
            
            
        }

    那么如果真的计算结果是 “-1” 又怎么处理呢?直接输入-1即可。

        public void testAdd() {
            CalcFunction.add("2-3");
            assertEquals("-1",CalcFunction.getResult());
            
            
        }

    代码覆盖率:

    照片:

    遇到的问题及解决方案:

    在这次作业中,遇到挺多问题的,比如错误的捕获等等,我们在不懂的时候一般都是请教舍友或者在百度上寻找答案。

    psp:

    PSP2.1 Personal Software Process Stages Estimated time(min) actual time(min)
    Planning 计划 12 10
    · Estimate 估计这个任务需要多少时间 120 115
    Development 开发 80 90
    · Analysis 需求分析 (包括学习新技术) 10 10
    · Design Spec 生成设计文档 7 10
    · Design Review 设计复审 6 5
    · Coding Standard 代码规范 4 5
    · Design 具体设计 30 40
    · Coding 具体编码 35 40
    · Code Review 代码复审 10 15
    · Test 测试(自我测试,修改代码,提交修改) 15 15
    Reporting 报告 20 25
    · 测试报告 5 5
    · 计算工作量 4 7
    · 并提出过程改进计划 4 4

    小结:

    用“汉堡包”的方式来评价一下我的小伙伴。第一层(先来一片面包):由于两个人比较熟悉,有较为接近的思想和思路,加上上一次的合作,两个人的分工越发默契。同时有问题的时候可以马上进行探讨,问题可以及时的得到解决。加上我的小伙伴编程能力也挺强的,任务完成相对没有特别的困难。

    再把肉放上):因为上次写的程序问题和规范都存在一定的问题,所以这次写起来也比较麻烦,要改挺多东西,也让我们意识到代码的规范性的重要。

    然后再来一片面包):希望队友在以后的学习生活中遇到困难,不要退缩,勇往直前,只要你努力一定都是可以解决的。

  • 相关阅读:
    对协程的一些理解
    JUC中Lock和ReentrantLock介绍及源码解析
    JUC中AQS简介
    Executor框架简介
    CyclicBarrier简介
    CountDownLatch简介
    Semaphore简介
    ThreadPoolExecutor简介
    AtomicInteger简介
    synchronized和volatile简介
  • 原文地址:https://www.cnblogs.com/kkjc/p/6624476.html
Copyright © 2011-2022 走看看