單元測試
.
測試分類
什么是測試?
測試的目的是盡可能多的發現軟件中存在的BUG,而不是為了隱藏BUG。事實上測試有很多種類,比如:邊界測試,壓力測試,性能測試等
黑盒測試
黑盒測試也叫功能測試,主要關注軟件每個功能是否實現,并不關注軟件代碼是否有錯誤;測試人員完全不考慮程序內部的邏輯結構和內部特性;任何人都可以做,把程序交給測試人員,到處隨便點,看程序是否出錯
白盒測試
白盒測試與黑盒測試相反,白盒測試主要檢查軟件內部邏輯結構、設計等是否符合規定;該測試人員要看懂別人寫的代碼,看懂之后,自己寫一份代碼測試別人寫的代碼
灰盒測試
灰盒測試是介于黑盒和白盒之間的一種測試,既關注功能也關注內部邏輯的實現,但并沒有白盒測試那么細致;需要灰盒測試的目的是因為白盒測試效率較低
單元測試
(模塊測試)是開發者編寫的一小段代碼,用于檢驗被測代碼的一個很小的、很明確的功能是否正確;比如一個方法是否正確,比如是否達到想要的效果等;這也是我們開發者最常用的一種方式;就程序員做自測用的
單元測試語法結構
public class Junit4Test {@Testpublic void xxxTest(){}
}
該測試語法注意事項
- 訪問權限修飾符必須是public修飾
- 返回值類型必須是void
- 方法形參列表必須為空
- 一個類中可以有多個@Test方法,可單獨或全部運行
單元測試常見的注解
A、@Before:它在執行@Test對應的方法之前執行
B、@Test:執行目標方法
C、@After:它在執行@Test對應的方法之后執行
public class Junit4Test {//一般用于關閉資源@Afterpublic void xxxAfter(){System.out.println("After");}@Testpublic void xxxTest(){//實際開發中:初始化+核心代碼+關閉資源,都可以放這里面System.out.println("Test");}//一般用于初始化@Beforepublic void xxxBefore(){System.out.println("Before");}*** 執行優先順序結果:* Before* Test* After*/
}
單元測試的作用
一個類里面可以當多個main方法用,讓程序更加健壯安全
自定義工具類
如何寫自定義工具類?對比Arrays和Collections工具類的共性,可以看出相對規則:
①、不能讓外部類實例化工具類【無構造方法,也就是private修飾的構造方法】
②、該類中的方法都是靜態的【用static修飾的方法】
模擬實例——自定義工具類
/*** 自定義工具類* 滿足上面的相對規則條件*/
public class CustomUtilityClass {//私有構造private CustomUtilityClass(){}//判斷該字符串是否為空并且長度為0,true為空,false不為空public static Boolean isNull(String str){if (str == null || ("".equals(str.trim()) && str.length() == 0)){return true;}return false;}
}
使用自定義的工具類
public class Junit4Test {@Testpublic void xxxTest(){Boolean xX = CustomUtilityClass.isNull(" ");//這里長度不為0,所以falseSystem.out.println(xX);//false}
}
自定義生成jar包——導入/導出
簡單理解jar包就是字節碼的集合包【裝的全是.class】
生成jar包,導出:
第一步:Project Structure->Artifacts->Add(+號)->JAR->From modules with depen…
From modules with depen…是自定義或全部項目
第二步:Main Class,其它不用改動
一般把項目名下存放jar包文件存放的文件夾名字用lib
第三步:Build->Build Artifacts
導入,使用生成的jar包:
點擊"Add as Library…" 產生關聯之后,jar是能打開的,如果沒有關聯是打不開的
因為這里是同一個項目,打成jar包之后,這里把CustomUtilityClass類刪了,然后直接在測試類中,CustomUtilityClass點方法,直接就可以用
PS:點擊"Add as Library…" 產生關聯之后,刪除關聯
PS:打jar錯了,這里直接刪除,再手動刪除打jar生成的位置
設計模式
最主要的設計模式——單例模式【三種創建方式】
單:一個
例:實例
模式:一種結構
單例模式:請設計一種結構只能創建一個對象,創建對象的個數必須有且僅有一個
單例模式之——餓漢模式【優勢:會主動創建對象,因為static修飾的,類加載時會被執行】
A、私有化構造方法【才能防止外部類隨意new對象】
B、提供一個對象,該對象被private static final 修飾,確保唯一
C、提供一個公共靜態的方法,用于返回對象 【靜態區域只能訪問靜態成員】
PS:跟Runtime類如出一轍
模仿——單例模式之餓漢模式
/*** 單例模式——餓漢模式*/
public class HungryManMode {//第二步:私有構造之后,外部類一個對象也創建不了,就需要當前類創建對象private static final HungryManMode hungry = new HungryManMode