結對編程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;
    }//建立隨機分數

}
相關文章
相關標籤/搜索