结对编程2——单元测试

1、小组成员及分工

  • 杨爱清

  1.学号:201421123099
  2.博客连接html

  • 杨立鑫

  1.学号:201421123100
  2.博客连接(本博客)git

  • 分工

  1.在提取计算模块上,杨爱清同窗扮演领航员的角色,杨立鑫同窗扮演驾驶员。
  杨爱清同窗提出了提取出来的类应该包含如下几个函数:
     - add() (加)
     - sub() (减)
     - mul() (乘)
     - div() (除)
     - compare() (分数大小比较)
     - GCD() (计算最大公约数)
     - CreatFrac() (建立随即分数)
  杨立鑫同窗根据根据同伴所说,在原程序中提取出了计算模块,并单首创建了一个类Fraction。(下方有Fraction代码)编程

  2.在单元测试上,杨立鑫同窗扮演领航员的角色,杨爱清同窗扮演驾驶员。
  杨立鑫同窗提出,经过单元测试代码,要测试加法是否能正确工做,加减乘除功能,测试计算类对于各类参数的支持。针对提取出的模块杨爱清同窗使用junit选择并构建了FractionTest类.dom

2、实验步骤

(1)需求分析:

  一、经过单元测试代码,测试加法是否能正确工做;ide

  二、经过单元测试代码,测试加减乘除功能。函数

  三、经过单元测试代码,测试计算类对于各类参数的支持:单元测试

  - 输入是有错误的,例如 “1 ++ 2”,学习

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

  - 或者是 “ 248 / 0” 怎么办?this

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

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

  四、经过增量修改的方式,改进程序, 完成对各类错误状况的处理。

(2)单元测试:

  经过产生随机数方法,反复测试全部单元;
  单元测试代码:

package test;

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;

public class FractionTest {
    
    Fraction fraction=new Fraction();
    Fraction f1 = fraction.CreatFrac();
    Fraction f2 = fraction.CreatFrac();
    @Before
    public void setUp() throws Exception {
    }

    @Test
    public void testFraction() {
        
    }

    @Test
    public void testAdd() {
        fraction.add(f1, f2);
    }

    @Test
    public void testSub() {
        fraction.sub(f1, f2);
    }

    @Test
    public void testMul() {
        fraction.mul(f1, f2);
    }

    @Test
    public void testDiv() {
        fraction.div(f1, f2);
    }

    @Test
    public void testCompare() {
        fraction.compare(f1, f2);
    }

    @Test
    public void testCreatFrac() {
    
    }

}

(3)测试结果截图:

  

(4)代码覆盖率

  

3、PSP

PSP2.1 Personal Software Process Stages Time (%) Senior Student(/hour) Time (%)(/hour)
· Planning 计划 2 1
· Estimate 估计这个任务须要多少时间 15 13
· Analysis 需求分析 (包括学习新技术) 2 1.5
· Coding Standard 代码规范 0.5 0.5
· Design 具体设计 1.5 1
· Coding 具体编码 10 7
· Test 测试(自我测试,修改代码,提交修改) 2 1.5
Reporting 报告 1 2

4、总结

  由于对GIT的不熟悉不熟练浪费了不少时间。常常提交不成功。可是在老师的帮助下,仍是成功的提交了代码,并基本的学会了使用,收获仍是蛮多的。
  结对编程的几回做业都是我和爱清一块儿完成,常常一块儿约图书馆,一块儿探讨,互相学习。而且在领航员与驾驶员的角色切换中,收获了合做的快乐。一块儿我都是喜欢什么事情什么程序都本身来作,这样才能更加清楚地了解哪部分代码是作什么,很是怕和别人合做后不清楚对方作的什么,不利于本身地编程。当合做而且扮演好角色才发现,合做不是两我的孤立地独自地各敲各地代码,而是在一人领航指挥,一人动手操做地模式下相互促进,并且增长了团队之间地交流,可以更加完善的实现项目。
  通过这两次编程,我以为可以为我将来进入社会进行团队协做时提供了思路与基础。

5、附录

  1.码云地址

  2.小组成员探讨照片
  

  3.特别鸣谢张敏老师~有问题问她几乎都是秒回,并且特别耐心详细地回答个人每一个问题~有图有真相~
  

  4.Fraction代码

package test;

public class Fraction {

    private int fenzi;
    private int fenmu;

    public Fraction() {
        super();
    }

    public Fraction(int fenzi, int fenmu) {
        super();
        this.fenzi = fenzi;
        this.fenmu = fenmu;
        this.simplify(fenzi, fenmu); //在构造函数中直接化简分数(感受此方法欠妥)
    }

    public static Fraction add(Fraction f1, Fraction f2) {

        int fz1 = f1.getFenzi();
        int fz2 = f2.getFenzi();
        int fm1 = f1.getFenmu();
        int fm2 = f2.getFenmu();
        Fraction f = new Fraction(fz1 * fm2 + fm1 * fz2, fm1 * fm2);
        return f;

    }//加法运算

    public static Fraction sub(Fraction f1, Fraction f2) {
        int fz1 = f1.getFenzi();
        int fz2 = f2.getFenzi();
        int fm1 = f1.getFenmu();
        int fm2 = f2.getFenmu();
        Fraction f = new Fraction(fz1 * fm2 - fm1 * fz2, fm1 * fm2);
        return f;
    }//减法运算

    public static Fraction mul(Fraction f1, Fraction f2) {
        int fz1 = f1.getFenzi();
        int fz2 = f2.getFenzi();
        int fm1 = f1.getFenmu();
        int fm2 = f2.getFenmu();
        Fraction f = new Fraction(fz1 * fz2, fm1 * fm2);
        return f;
    }//乘法运算

    public static Fraction div(Fraction f1, Fraction f2) {
        int fz1 = f1.getFenzi();
        int fz2 = f2.getFenzi();
        int fm1 = f1.getFenmu();
        int fm2 = f2.getFenmu();
        Fraction f = new Fraction(fz1 * fm2, fm1 * fz2);
        return f;
    }//除法运算

    public static boolean compare(Fraction f1, Fraction f2) {
        int fz1 = f1.getFenzi();
        int fz2 = f2.getFenzi();
        int fm1 = f1.getFenmu();
        int fm2 = f2.getFenmu();
        if (fz1 * fm2 >= fz2 * fm1) {
            return true;
        } else {
            return false;
        }
    }//比较两分数的大小

    public static int GCD(int m, int n) {
        while (true) {
            if ((m = m % n) == 0) {
                return n;
            }
            if ((n = n % m) == 0) {
                return m;
            }
        }
    }//计算最大公约数

    public void simplify(int fenzi, int fenmu) {
        int GCD = GCD(fenzi, fenmu);
        this.fenzi = fenzi / GCD;
        this.fenmu = fenmu / GCD;
    }//化简分数

    @Override
    public String toString() {
        if (fenzi == 0) {
            return 0 + "";
        } else if (fenzi % fenmu == 0) {
            return fenzi / fenmu + "";
        } else {
            return fenzi + "/" + fenmu;
        }
    }//改写toString,输出为分数形式

    public int getFenzi() {
        return fenzi;
    }

    public void setFenzi(int fenzi) {
        this.fenzi = fenzi;
    }

    public int getFenmu() {
        return fenmu;
    }

    public void setFenmu(int fenmu) {
        this.fenmu = fenmu;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + fenmu;
        result = prime * result + fenzi;
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        Fraction other = (Fraction) obj;
        if (fenmu != other.fenmu) {
            return false;
        }
        if (fenzi != other.fenzi) {
            return false;
        }
        return true;
    }

    public static Fraction CreatFrac() {
        int fz, fm;
        fz = (int) (0 + Math.random() * (100 - 0 + 1));//分子取0--100的随机数
        fm = (int) (1 + Math.random() * (10 - 1 + 1));//分母取1--100的随机数
        Fraction frac = new Fraction(fz, fm);
        return frac;
    }//建立随机分数

}
相关文章
相关标签/搜索