天天看點

結對程式設計2——單元測試

林曉芳 201421123092   陳惠 201421123096

Coding位址:點我檢視哦

題目描述:

上一周大家為四則運算程式設計了2-3個新功能,本次在隔了一周之後,我們循序漸進地進階。本次目标:

  1. 把計算子產品提取出來,單獨建立一個類。
  2. 針對提取出來的計算類的接口函數做單元測試。

需求分析:

  1. 測試加法是否能正确工作;
  2. 測試加減乘除功能。
  3. 測試計算類對于各種參數的支援。

設計測試架構, 模拟測試資料:

計算子產品的測試用例及運作結果:

@Test
    public void testAdd() {
            assertEquals(String.valueOf("3"),Calculator.add("5/3","4/3"));
            assertEquals(String.valueOf("9"), Calculator.add("4","5"));
    }

    @Test
    public void testSub() {
            assertEquals(String.valueOf("1/3"),Calculator.sub("5/3","4/3"));
            assertEquals(String.valueOf("-1"),Calculator.sub("4","5"));
    }

    @Test
    public void testMul() {
            assertEquals(String.valueOf("20/9"),Calculator.mul("5/3","4/3"));
            assertEquals(String.valueOf("20"),Calculator.mul("4","5"));
    }

    @Test
    public void testDiv() throws Exception {
            assertEquals(String.valueOf("5/4"),Calculator.div("5/3","4/3"));
            assertEquals(String.valueOf("4/5"),Calculator.div("4","5"));
    }      
結對程式設計2——單元測試

計算最大公約數測試:

@Test
    public void testGCD() {
        assertEquals(Calculator.GCD(15,10),5);
    }      
結對程式設計2——單元測試

參數錯誤提示:

public static String div(String a, String b) throws Exception// 除法
    {
        a = a + "/1";
        b = b + "/1";
        String[] m = a.split("/");
        String[] n = b.split("/");
        int numerator1 = new Integer(m[0]);
        int denominator1 = new Integer(m[1]);
        int numerator2 = new Integer(n[0]);
        int denominator2 = new Integer(n[1]);
        if (denominator1 == 0 || numerator2 == 0 || denominator2 == 0) {
            throw new Exception("分母不能為0!");
        }
        int p = numerator1 * denominator2;
        int q = denominator1 * numerator2;
        int t = GCD(p, q);
        return Reduction(p / t, q / t);
    }      
@Test
    public void testDiv() throws Exception {
            assertEquals(String.valueOf("5/4"),Calculator.div("5/3","4/3"));
            assertEquals(String.valueOf("4/5"),Calculator.div("4","5"));
            try{
                Calculator.div("4","0");
                }    
                catch(Exception ex){
                assertEquals("分母不能為0!",ex.getMessage());
                fail("分母不能為0!");
                }
    }      
結對程式設計2——單元測試

 覆寫率:

結對程式設計2——單元測試

非擺拍照片:

結對程式設計2——單元測試

小結與感受:

     通過本次測試,能夠有效發現程式計算子產品的問題,并予以改進。由于我們兩個都是第一次嘗試測試,對于測試很陌生,不知從何下手,通過老師關于測試的教程和其他同學的幫助,對計算部分的代碼進行了測試。測試過程中,我們開始慶幸當初的代碼程式設計相對而言比較規範,使得隔了一周之後再看之前的代碼,我們還能夠看懂并加以修改。雖然這次還能夠看懂自己寫的代碼,但是通過這次測試還是體會到了擁有良好的設計、編碼規範和必要的注釋的重要性。首先,良好的設計是基礎,隻有擁有良好的設計,才能更有效地找出編碼過程中出現的問題并及時予以改正;其次,編碼規範是核心,一大段雜亂無章的代碼不僅會給自己和隊友帶來不必要的麻煩,而且在出現錯誤的時候容易迷失方向,浪費時間。最後,必要的注釋可以讓我們更快地了解整個程式。

“漢堡包”:

先來一片面包:隊友是一個有想法的人,但還會聽取我的看法,互相讨論最終執行。

在把肉放上:有好的想法,但由于程式設計過程比較困難,會選擇比較不簡潔的解決方式。

再來一片面包: 兩個人之間要能夠互相學習,互相讨論,發揮出1+1>2的能力。

PSP:

PSP2.1 Personal Software Process Stages Time (%) Senior Student Time (%)
Planning 計劃 1h 0.5h
· Estimate 估計這個任務需要多少時間 8.5h 8h
· Analysis 需求分析 (包括學習新技術)
· Coding Standard 代碼規範
· Design 具體設計 1.5h
· Coding 具體編碼 3h 2.5h
· Test 測試(自我測試,修改代碼,送出修改)
Reporting 報告
上一篇: lambda表達式
下一篇: lambda表達式