Java複習第12天---12.2---基礎加強---Junit測試、反射1
目錄
內容
1、Junit單元測試
1.1、概述
單元測試分類:黑盒測試和白盒測試
- 黑盒測試:給定輸入,看程序是否能夠輸出期望的值;不需要額外編寫測試代碼,源代碼不可見
- 白盒測試:需要編寫測試代碼,關注程序具體的執行流程;進行更全面的測試,同時源代碼是可見的
Junit單元測試屬於白盒測試。以前測試都是自己編寫測試類,如果項目簡單還可以,但是當項目很複雜的時候,需要測試的內容很繁雜,如果逐一編寫測試類代碼,那任務很重,而且需要很多重複動作,效率很低下。Junit單元測試就是專門解決測試問題的測試框架。
1.2、使用
- 步驟:
-
定義一個測試類
- 建議:
- 測試類名:被測試的類名+Test Calculator —> CalculatorTest
- 包名:xxx.xxx.xx.test cn.gaogzhen.com ----> cn.gaogzhen.test
- 建議:
-
定義測試方法:可以獨立運行
- 建議
- 方法名:test+ 要測試的方法名 add —> testAdd
- 返回值:void
- 參數列表:空參
- 建議
-
給方法加@Test
-
1.3、@Before、@After
- @Before:在測試方法之前執行的操作
- @After:在測試方法治好執行的操作
2、反射
2.1、概述
反射是框架設計的靈魂。
- 框架:半成品的軟件。在框架基礎上開發,大大提高開發效率。
- 反射:把類的各個組成部分封裝爲其他對象,稱爲反射機制。
Java代碼在計算機中經歷的3個階段:
- 圖示2.1-1:
- 源代碼階段:存儲在磁盤上
- .java文件:存儲在磁盤上的java文件
- .class文件:經編譯生成class字節碼文件
- Class類對象階段:加載入內存
- class文件經ClassLoader類加載類加載如內存
- Runtime運行時階段:創建對象
2.2、獲取Class對象
: 對應於Java代碼在計算機中3個階段,獲取Class對象有3種方式
- 源代碼階段:Class.forName(“全類名”)
- Class對象階段:類名.Class
- Runtime運行時階段:對象.getClass()
-
示例2.2-1:
package reflect; public class Student { private String name; private int age; private char gender; public Student() {} public Student(String name, int age, char gender) { this.name = name; this.age = age; this.gender = gender; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public char getGender() { return gender; } public void setGender(char gender) { this.gender = gender; } @Override public String toString() { return "Student [name=" + name + ", age=" + age + ", gender=" + gender + "]"; } } package reflect; public class TestClassObject { public static void main(String[] args) throws ClassNotFoundException { // 1、Class.forName("全類名") Class cls1 = Class.forName("reflect.Student"); System.out.println(cls1); // 2、類名.class Class cls2 = Student.class; System.out.println(cls2); // 3、對象.getClass() Student s = new Student(); Class cls3 = s.getClass(); System.out.println(cls3); // == 比較三個對象 System.out.println(cls1 == cls2); System.out.println(cls1 == cls3); } } 測試結果: class reflect.Student class reflect.Student class reflect.Student true true
-
結論:
- 同一個字節碼文件在程序運行過程中,只會加載一次,不論通過哪種方式獲取的字節碼對象都是同一個。
後記 :
本項目爲參考某馬視頻開發,相關視頻及配套資料可自行度娘或者聯繫本人。上面爲自己編寫的開發文檔,持續更新。歡迎交流,本人QQ:806797785
前端項目源代碼地址:https://gitee.com/gaogzhen/vue-leyou
後端JAVA源代碼地址:https://gitee.com/gaogzhen/JAVA