任務:
//定義一個數組
int arr[] = {1,2,3,4,5,6,7,8};
//打印原始數組的值
for(int i:arr){
System.out.print(i + " ");
}
System.out.println();
// 添加代碼刪除上面數組中的5
...
//打印出 1 2 3 4 6 7 8 0
for(int i:arr){
System.out.print(i + " ");
}
System.out.println();
// 添加代碼再在4後面5
...
//打印出 1 2 3 4 5 6 7 8
for(int i:arr){
System.out.print(i + " ");
}
System.out.println();html
想用程序解決問題時,要會寫三種碼:java
- 僞代碼
- 產品代碼
- 測試代碼
僞代碼
是產品代碼
最天然的、最好的註釋.僞代碼能夠用漢語寫,推薦用英語寫,僞代碼與具體編程語言無關,不要寫與具體編程語言語法相關的語句。程序員
Java編程時,程序員對類實現的測試叫單元測試
編程
測試用例
是爲某個特殊目標而編制的一組測試輸入、執行條件以及預期結果,以便測試某個程序路徑或覈實是否知足某個特定需求。這裏咱們的測試輸入是「50」,預期結果是「不及格」。
數組
TDD(Test Driven Devlopment, 測試驅動開發)先寫測試代碼,而後再寫產品代碼的開發方法叫「測試驅動開發」(TDD)。編程語言
package exp2; import junit.framework.TestCase; import org.junit.Before; import org.junit.Test; /** * Created by Veronica on 2017/4/20. */ public class StringBufferDemo01Test extends TestCase { StringBuffer a = new StringBuffer("StringBuffer01");//測試14個字符串 StringBuffer b = new StringBuffer("StringBuffer01StringBuffer01");//測試28個字符串 StringBuffer c = new StringBuffer("StringBuffer01StringBuffer01StringBuffer01");//測試42個字符串 @Test public void tsetcharAt() throws Exception{ assertEquals('S',a.charAt(0)); assertEquals('B',a.charAt(6)); assertEquals('1',b.charAt(11)); } @Test public void testcapacity() throws Exception{ assertEquals(30,a.capacity()); assertEquals(44,b.capacity()); assertEquals(58,c.capacity()); } @Test public void testlength() throws Exception{ assertEquals(14,a.length()); assertEquals(28,b.length()); assertEquals(42,c.length()); } @Test public void testindexOf() throws Exception{ assertEquals(0,a.indexOf("Str")); assertEquals(12,b.indexOf("01")); assertEquals(8,c.indexOf("ff")); } }
package exp2; /** * Created by Veronica on 2017/4/20. */ // Server Classes abstract class Data { abstract public void DisplayValue(); } class Short extends Data { short value; Short() { value=5; } public void DisplayValue(){ System.out.println (value); } } // Pattern Classes abstract class Factory { abstract public Data CreateDataObject(); } class ShortFactory extends Factory { public Data CreateDataObject(){ return new Short(); } } //Client classes class Document { Data pd; Document(Factory pf){ pd = pf.CreateDataObject(); } public void DisplayData(){ pd.DisplayValue(); } } //Test class public class MyDoc { static Document d; public static void main(String[] args) { d = new Document(new ShortFactory()); d.DisplayData(); } }
一、IDEA中使用JUnit安裝插件JunitGenerator V2.0,
1)選擇File->Setting打開設置對話框
2)在設置對話框中選擇Plugins, 單擊Browse Repositories
按鈕打開插件安裝界面,而不是單擊Install JetBrains plugin...
3)在插件安裝對話框的搜索中輸入junit,單擊JunitGenerator V2.0,單擊右邊綠色的Install1按鈕安裝:
否則只能搜索到下面內容
ide
二、在增長測試異常狀況的用例testException
和測試邊界狀況的用例testBoundary
時,出現錯誤
函數
解決方法:根據提示可知是第21行代碼出現錯誤,把第21行代碼添加註釋,可運行測試經過,能夠肯定錯誤就是這行,
查看MyUtil類的代碼,可知(grade<60)爲不及格,改寫代碼測試經過性能
package exp2; public class MyUtil { public static String percentage2fivegrade(int grade){ if (grade<0) return "錯誤"; //若是成績小於60,轉成「不及格」 else if (grade < 60) return "不及格"; //若是成績在60與70之間,轉成「及格」 else if (grade < 70) return "及格"; //若是成績在70與80之間,轉成「中等」 else if (grade < 80) return "中等"; //若是成績在80與90之間,轉成「良好」 else if (grade < 90) return "良好"; //若是成績在90與100之間,轉成「優秀」 else if (grade <= 100) return "優秀"; //若是成績大於100,轉成「錯誤」 else return "錯誤"; } }
三、StringBuffer的capacity是怎樣計算的?單元測試
查資料知道,經過調用length()方法能夠獲得當前StringBuffer的長度。而經過調用capacity()方法能夠獲得總的分配容量,分配的容量是隨機的嗎
由代碼的運行結果能夠知道,當length爲12時,capacity爲16,我試着把字符串增長到16,結果顯示capacity的結果仍是16,當增長到17的時候,capacity的值變爲34。
/** * This implements the expansion semantics of ensureCapacity with no * size check or synchronization. */ void expandCapacity(int minimumCapacity) { int newCapacity = (value.length + 1) * 2; if (newCapacity < 0) { newCapacity = Integer.MAX_VALUE; } else if (minimumCapacity > newCapacity) { newCapacity = minimumCapacity; } char newValue[] = new char[newCapacity]; System.arraycopy(value, 0, newValue, 0, count); value = newValue; }
這段代碼解釋了StringBuffer的容量(capacity)分配。
StringBuffer在內部維護一個字符數組,當你使用缺省的構造函數來建立StringBuffer對象的時候, StringBuffer的容量被初始化爲16個字符,也就是說缺省容量就是16個字符。當StringBuffer達到最大容 量的時候,它會將自身容量增長到當前的2倍再加2,也就是(2*舊值+2)。
若是你使用缺省值,初始化以後接着往裏面追加字符,在你追加到第17個字符的時候它會將容量增長 到34(216+2),當追加到34個字符的時候就會將容量增長到70(234+2)。不管什麼時候只要StringBuffer 到達它的最大容量它就不得不建立一個新的字符數組而後從新將舊字符和新字符都拷貝一遍。因此給 StringBuffer設置一個合理的初始化容量值,會提高程序的性能。
四、怎樣寫測試用例
JUnit4及其在IDEA中的使用
五、調試capacity時出現錯誤
容量不是隨便寫的,是設定的嗎?根據提示修改就能夠經過。
步驟 | 耗時 | 百分比 |
---|---|---|
需求分析 | 20min | 12.5% |
設計 | 30min | 18.75% |
代碼實現 | 60min | 37.5% |
測試 | 20min | 12.5% |
總結分析 | 30min | 18.75% |
多發現問題,多總結。