Java複習第12天---12.2---基礎加強---Junit測試、反射1

Java複習第12天---12.2---基礎加強---Junit測試、反射1


目錄




內容

1、Junit單元測試

1.1、概述

  單元測試分類:黑盒測試和白盒測試

  • 黑盒測試:給定輸入,看程序是否能夠輸出期望的值;不需要額外編寫測試代碼,源代碼不可見
  • 白盒測試:需要編寫測試代碼,關注程序具體的執行流程;進行更全面的測試,同時源代碼是可見的

  Junit單元測試屬於白盒測試。以前測試都是自己編寫測試類,如果項目簡單還可以,但是當項目很複雜的時候,需要測試的內容很繁雜,如果逐一編寫測試類代碼,那任務很重,而且需要很多重複動作,效率很低下。Junit單元測試就是專門解決測試問題的測試框架。

1.2、使用

  • 步驟:
    1. 定義一個測試類

      • 建議:
        • 測試類名:被測試的類名+Test Calculator —> CalculatorTest
        • 包名:xxx.xxx.xx.test cn.gaogzhen.com ----> cn.gaogzhen.test
    2. 定義測試方法:可以獨立運行

      • 建議
        • 方法名:test+ 要測試的方法名 add —> testAdd
        • 返回值:void
        • 參數列表:空參
    3. 給方法加@Test

1.3、@Before、@After

  • @Before:在測試方法之前執行的操作
  • @After:在測試方法治好執行的操作

2、反射

2.1、概述

  反射是框架設計的靈魂。

  • 框架:半成品的軟件。在框架基礎上開發,大大提高開發效率。
  • 反射:把類的各個組成部分封裝爲其他對象,稱爲反射機制。

  Java代碼在計算機中經歷的3個階段:

  • 圖示2.1-1:[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-64clu63m-1590987915585)(./images/three-stage.jpg)]
  • 源代碼階段:存儲在磁盤上
    • .java文件:存儲在磁盤上的java文件
    • .class文件:經編譯生成class字節碼文件
  • Class類對象階段:加載入內存
    • class文件經ClassLoader類加載類加載如內存
  • Runtime運行時階段:創建對象

2.2、獲取Class對象

:  對應於Java代碼在計算機中3個階段,獲取Class對象有3種方式

  1. 源代碼階段:Class.forName(“全類名”)
  2. Class對象階段:類名.Class
  3. 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章