Java中的斷言 Assert


今天正好遇到了,就記一下

一.作用:

僅用與編寫單元測試, 一般不用於生產環境

assert 理論上和 if 類似, 但是assert 僅僅用於測試, 不能用於業務

from jdk 1.4

二.assert 關鍵字(Java斷言)

1. 使用斷言

要添加斷言,只需使用assert關鍵字並為其賦予布爾條件

        boolean dd = false;
        try {
            assert dd == true;
        } catch (AssertionError e) {
            System.out.println(e.getMessage());  // null
            e.printStackTrace();
        }
        boolean dd = false;
        try {
            assert dd == true : " dd is false";
        } catch (AssertionError e) {
            System.out.println(e.getMessage());  // dd is false
            e.printStackTrace();
        }

斷言將拋出一個異常信息用於構造 AssertionError

2. AssertionError處理

注意這個拋出的是Error , 而不是被捕獲的 Exception, 因此不需要嘗試捕獲(try catch)

AssertionError extends Error 

3. 在IDE中啟用斷言

如果發現斷言無效, 則可能時ide沒配置 😂

需要配置VM參數

  • eclipse:

  • idea:

三.JUnit 斷言

幾個方法:

  1. void assertEquals(boolean expected, boolean actual)
    檢查兩個變量或者等式是否平衡
  2. void assertTrue(boolean expected, boolean actual)
    檢查條件為真
  3. void assertFalse(boolean condition)
    檢查條件為假
  4. void assertNotNull(Object object)
    檢查對象不為空
  5. void assertNull(Object object)
    檢查對象為空
  6. void assertSame(boolean condition)
    assertSame() 方法檢查兩個相關對象是否指向同一個對象
  7. void assertNotSame(boolean condition)
    assertNotSame() 方法檢查兩個相關對象是否不指向同一個對象
  8. void assertArrayEquals(expectedArray, resultArray)
    assertArrayEquals() 方法檢查兩個數組是否相等

四、使用斷言

1.可以在預計正常情況下程序不會到達的地方放置斷言 :assert false
2.斷言可以用於檢查傳遞給私有方法的參數。(對於公有方法,因為是提供給外部的接口,所以必須在方法中有相應的參數檢驗才能保證代碼的健壯性)
3.使用斷言測試方法執行的前置條件和后置條件
4.使用斷言檢查類的不變狀態,確保任何情況下,某個變量的狀態必須滿足。(如age屬性應大於0小於某個合適值)
不用斷言
斷言語句不是永遠會執行,可以屏蔽也可以啟用
因此:
1.不要使用斷言作為公共方法的參數檢查,公共方法的參數永遠都要執行
2.斷言語句不可以有任何邊界效應,不要使用斷言語句去修改變量和改變方法的返回值.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM