结对作业2:单元测试
(201421123002 翁珊;201421123006 黃月梅;201421123007 徐曉珊)?
題目要求:
需求分析:
1.把計算模塊提取出來,單獨創建一個類。
? 計算模塊單獨成類(CalcFunction)
1 public class CalcFunction { 2 static int count=0,count1=0; 3 public static String add(Fraction a, Fraction b) //加法 參考分數間加減乘除 用四個變量表示兩個分數的分子分母 4 { 5 int i, j, k, s, m, n, p; 6 i = a.getNumerator();// 分子 7 j = a.getDenominator();// 分母 8 k = b.getNumerator(); 9 s = b.getDenominator(); 10 m = i * s + j * k; 11 n = s * j; 12 p = Calc.getGCD(m, n); 13 return Calc.Reduction(m / p, n / p); 14 15 } 16 17 public static String div(Fraction a, Fraction b)//除法 設置生成的隨機數不為0,則不存在除數為0的情況 18 19 { 20 int i, j, k, s, m, n, p; 21 i = a.getNumerator();// 分子 22 j = a.getDenominator();// 分母 23 k = b.getNumerator(); 24 s = b.getDenominator(); 25 m = s * i; 26 n = j * k; 27 p = Calc.getGCD(m, n); 28 return Calc.Reduction(m / p, n / p); 29 } 30 31 public static String sub(Fraction a, Fraction b)//減法 32 33 { 34 int i, j, k, s, m, n, p; 35 i = a.getNumerator();// 分子 36 j = a.getDenominator();// 分母 37 k = b.getNumerator(); 38 s = b.getDenominator(); 39 m = i * s - j * k; 40 n = j * s; 41 p = Calc.getGCD(m, n); 42 return Calc.Reduction(m / p, n / p); 43 } 44 45 public static String mul(Fraction a, Fraction b)//乘法 46 47 { 48 int i, j, k, s, m, n, p; 49 i = a.getNumerator();// 分子 50 j = a.getDenominator();// 分母 51 k = b.getNumerator(); 52 s = b.getDenominator(); 53 m = i * k; 54 n = j * s; 55 p = Calc.getGCD(m, n); 56 return Calc.Reduction(m / p, n / p); 57 } 58 59 }2.針對提取出來的計算類的接口函數做單元測試。
單元測試代碼如下:
1 @Test 2 public void testAdd() { 3 Fraction a = new Fraction(2,3,"2/3"); 4 Fraction b = new Fraction(1,3,"1/3"); 5 6 assertEquals(CalcFunction.add(a,b), "1"); 7 } 8 9 @Test 10 public void testDiv() { 11 Fraction a = new Fraction(2,3,"2/3"); 12 Fraction b = new Fraction(1,3,"1/3"); 13 14 assertEquals(CalcFunction.div(a,b), "2"); 15 } 16 17 @Test 18 public void testSub() { 19 Fraction a = new Fraction(2,3,"2/3"); 20 Fraction b = new Fraction(1,3,"1/3"); 21 22 assertEquals(CalcFunction.sub(a,b), "1/3"); 23 } 24 25 @Test 26 public void testMul() { 27 Fraction a = new Fraction(2,3,"2/3"); 28 Fraction b = new Fraction(1,3,"1/3"); 29 30 assertEquals(CalcFunction.mul(a,b), "2/9"); 31 }計算模塊測試結果如下:
其他測試(CalcTest):
1 @Before 2 public void setUp() throws Exception { 3 } 4 5 @After 6 public void tearDown() throws Exception { 7 } 8 9 @Test 10 public void testGetGCD() { 11 assertEquals(Calc.getGCD(10, 5), 5); 12 } 13 14 @Test 15 public void testReduction() { 16 assertEquals(Calc.Reduction(9, 5), "9/5"); 17 }測試結果如下:
代碼覆蓋率:
?測試中遇到的問題及解決:
? ? 因為要求利用助教提供的空殼進行代碼填充,所以對于代碼模塊的分割做的不是很好。后來將一些像gui模塊編寫這樣在這次作業中沒有用到的模塊刪除。對于除零錯誤,由于剛開始我們就設置了被除數不能出現=0的情況,就沒有考慮。運算符也是剛開始就設置了只有單個字符生成。
小結與感受:通過測試,是否有效發現了程序計算模塊的問題,并給予改進?
? ? 通過單元測試可以知道方法的某些地方出錯了,需要在方法定義的地方進行相應的修改。就像剛開始進行四則運算的測試時一開始測試失敗了,隨后找到原因在相應方法的源代碼上進行處理和修改,就可以測試成功了。再加上分了模塊后,發現代碼錯誤的時候找錯更容易,可以更好的進行修改。
隔周看之前的代碼:
(1)良好的設計
? ? 如果剛開始就能有良好的設計思想,做好模塊劃分和有單元測試的想法,現在的代碼就不會那么亂,不能很好的進行模塊劃分和測試。
(2)編碼規范
? ? 代碼規范的重要性不言而喻,能讓大家看到類名函數名就能知道函數的用途是什么,這也是很重要的。這樣不僅自己,包括別的用戶也可以進行較為輕松的閱讀。
(3)必要的注釋 ?
? ? 因為剛開始的代碼編寫比較簡單,所以忽略了注釋,導致現在再看之前的代碼較為吃力,但是因為方法的命名是根據其代表的意義的,所以還是能夠大致理解,但是警示了我們今后寫代碼要有一些基本的注釋。??
git克隆助教的框架:
?
?git上交截圖:
?
????撮coding鏈接(所有代碼在src里)
?https://coding.net/u/xxs24/p/pairwork2/git
?
結對照片:
?
?
PSP表格:
| PSP2.1 | Personal Software Process Stages | Estimated Time(hour) | Actual Time (hour) |
| Planning | 計劃 | 0.5 | 0.5 |
| · Estimate | 估計這個任務需要多少時間 | 10 | 12 |
| Development | 開發 | 5 | 6 |
| · Analysis | 需求分析 (包括學習新技術) | 1 | 1.5 |
| · Design Spec | 生成設計文檔 | 1 | 1 |
| · Design Review | 設計復審 | 1.5 | 2 |
| · Coding Standard | 代碼規范 | 0.5 | 0.5 |
| · Design | 具體設計 | 2 | 2 |
| · Coding | 具體編碼 | 4 | 4.5 |
| · Code Review | 代碼復審 | 0.5 | 0.5 |
| · Test | 測試(自我測試,修改代碼,提交修改) | 0.5 | 1 |
| Reporting | 報告 | 0.5 | 0.5 |
| · | 測試報告 | 1/6 | 1/6 |
| · | 計算工作量 | 1/6 | 0.5 |
| · | 并提出過程改進計劃 | 0.25 | 0.25 |
轉載于:https://www.cnblogs.com/xxs24/p/6628709.html
總結
以上是生活随笔為你收集整理的结对作业2:单元测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NPM和Yarn添加淘宝镜像
- 下一篇: Spark RDD、DataFrame原