2015-09-04 59 views
1

我讀過一本書說:「使用assert來測試內部代碼是有意義的。例如:是JDK斷言需要使用的嗎?

private String welcome(String name) { 
    assert name!=null && !name.isEmpty() : "name must be specified"; 
    return "Hello, " + name; 
} 

」 那麼本書介紹了團結test.I奇蹟是有必要使用斷言甚至有統一的測試? 謝謝。

回答

0

單元測試根據您提供的某些狀態和參數驗證一部分代碼的行爲。

在運行時,任何可能的值(正確的類型)都可以傳遞給您的方法,這就是您每次執行assert的原因。如果您希望程序在收到不受支持的參數時終止執行,那麼assert對此可能很有用。

您可能還想看看投擲IllegalArgumentException,因爲這具體描述了哪裏出了問題。

+0

我很困惑這個邏輯。我的意思是,如果我知道(或通過單元測試發現)一些不支持的參數將通過,爲什麼不做一些像拋出IllegalArgumentException一樣的預防? – yuxh

+0

你當然可以拋出一個'IllegalArgumentException',但這不會簡單地阻止*某人傳入一個不受支持的參數。這引發了一個例外,它使調用代碼有機會處理這種情況。單元測試可以檢查是否傳入了不支持的參數,然後該方法正確地引發了您期望的異常,而不僅僅是摔倒。 – Alex

+0

我使用異常來爲調用代碼提供處理場景的更改。我使用單元測試來防止異常發生。那麼JDK聲明使用了什麼? – yuxh