1. 程式人生 > >Java- 斷言及程式的測試JUnit

Java- 斷言及程式的測試JUnit

斷言(assert)

  • 斷言的格式:
    • assert 表示式;
    • assert 表示式: 資訊;
  • 在除錯程式時,如果表示式不為true,則程式會嘗試異常,並輸出相關的錯誤資訊。起到對程式的檢測的作用。
public class Assertion{
    public static void main(String[] args) {
        assert hypotenuse(3, 4)==5 : "algorithm error";
    }

    static double hypotenuse(double x, double y){
        return
Math.sqrt(x*x + y*y + 1); } }

Assert的編譯與執行

  • 編譯
    • 只有在JDK1.4及以上的版本中才可以使用斷言
    • 在1.4以前的版本中,需要通過-source選項來指明版本
  • 執行
    • 在執行時,要使assert起作用,則在執行時,要使用-ea-enableassertions選項
      Assert的編譯與執行

程式的測試及JUnit

  • 程式的修改是經常要進行的過程,必須保證程式在修改後其結構仍然是正確的
  • 在編寫程式程式碼的同時,還編寫測試程式碼來判斷這些程式是否正確
  • 這個過程稱為“測試驅動”的開發過程
  • 從而保證了程式的開發效率

程式中的錯誤

  • 程式中的錯位可以分為三大類
    1. 語法錯位(Syntax error)
      • 編輯、編譯器發現
    2. 執行錯誤(Runtime error)
      • 異常處理機制
    3. 邏輯錯誤(Logic error)
      • 除錯(debug)、單元測試(unit test)
      • -

單元(JUnit) 測試

  • 在eclipse中
    • 專案右鍵 - New - Junit Test Case
  • @Test來標註測試函式
  • 在測試中常用的語句如下:
    • fail(msg); // 表示程式出錯
    • assertEquals(arg1, arg2);// 表示程式要保證兩個引數要相等
    • assertNull(arg); // 表示引數要為null

程式除錯(debug)

程式的除錯

  • 在IDE中,用debug as…
  • 進入到除錯檢視(debug perspective)

除錯的手段

  1. 斷點(breakpoint),程式的暫停點
  2. 跟蹤(trace),觀察程式的執行流程
    • 逐語句執行,會進入呼叫的函式體
    • 逐過程執行,跳過進入呼叫的函式體
    • 跳出函式
    • 執行到游標處
  3. 監視(watch),變數的變化過程
    • 即時監視,滑鼠指向變數,即可顯示
    • 快速監視,右鍵- inspector
    • 新增監視,右鍵 - watch
    • 還可以看:呼叫堆疊等