首页 > 代码库 > 结对编程2——单元测试

结对编程2——单元测试

郑怀勇 201421123016  康建灿 201421123017 

代码在这  /   康建灿博客点这

需求分析

  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

 

单元测试覆盖率:

 

 技术分享

小结:

汉堡包点评:

先来一片面包:我们有着共同的目标,且彼此之间都很熟悉对方,所以我们相信可以做好这次单元测试;

再把肉放上:由于前面规范问题做得不是很好,所以有很多的方面需要我们去改进,但也不能因此放弃,而是应该迎难而上,强调我们可以做到更好;

然后再来一片面包:最后,距离成功越来越近,这时,更应该互相激励,努力做到更好。

结对编程2——单元测试