斷言

assertions 類型啟用或停用 Java 1.4 斷言功能,適用於整個 Java 程式或程式的元件。它可以在 <java><junit> 中使用,為程式碼新增額外的驗證。

斷言在 Java SE 文件Java 語言規範 中有說明。

要注意的重點是,當斷言失敗時,會擲回 java.lang.AssertionError,而且此功能僅適用於 Java 1.4 和更新版本。若要啟用斷言,必須在編譯來源時,在 <javac> 中設定 source=1.4(或更新版本),而且程式碼必須包含要測試的 assert 陳述式。此動作的結果是,程式碼無法在較早版本的 Java 上編譯或執行。因此,Apache Ant 本身目前不包含任何斷言。

當透過巢狀斷言元素在任務中啟用(或停用)斷言時,類別載入器或命令列會使用適當的選項進行修改。這表示執行的 JVM 必須是 1.4 或更新版本,即使程式碼中沒有斷言。嘗試在較早的 JVM 上啟用斷言,將導致「無法辨識的選項」錯誤,而且 JVM 將不會啟動。

屬性

屬性 說明 必要
enableSystemAssertions 旗標,用於開啟或關閉系統斷言。 否;預設為 未指定

當系統斷言既未啟用也未停用時,JVM 就不會收到任何斷言資訊—目前 JVM 的預設動作是停用系統斷言。

另外請注意,對於 JRE 的哪些部分附帶有用的斷言,並沒有明確的文件說明。

巢狀元素

enable

在程式碼的部分啟用斷言。如果未指定套件或類別,則會在所有(使用者)程式碼中開啟斷言。

屬性 說明 必要
class 要啟用斷言的類別名稱。
package 要在所有類別上啟用斷言的套件名稱。(包括子套件。)對匿名套件使用 ...

disable

在程式碼的部分停用斷言。

屬性 說明 必要
class 要停用斷言的類別名稱。
package 要在所有類別上停用斷言的套件名稱。(包括子套件。)對匿名套件使用 ...

由於預設會停用斷言,因此只有在父套件中啟用斷言時,才需要停用斷言。

範例

範例:在所有使用者類別中啟用斷言

所有不在 JRE 中的類別(即所有非系統類別)都已開啟斷言。

<assertions>
  <enable/>
</assertions>
範例:啟用單一類別

在稱為 Test 的類別中啟用斷言

<assertions>
  <enable class="Test"/>
</assertions>
範例:啟用套件

org.apache 套件和所有以 org.apache. 字首開頭的套件中啟用斷言

<assertions>
  <enable package="org.apache"/>
</assertions>
範例:系統斷言

啟用系統斷言和所有 org.apache 套件中的斷言,但 Ant 除外(但包括 org.apache.tools.ant.Main

<assertions enableSystemAssertions="true">
  <enable package="org.apache"/>
  <disable package="org.apache.tools.ant"/>
  <enable class="org.apache.tools.ant.Main"/>
</assertions>
範例:已停用和匿名套件斷言

停用系統斷言;在匿名套件中啟用那些斷言

<assertions enableSystemAssertions="false">
  <enable package="..."/>
</assertions>
範例:參考斷言

此類型為資料類型,因此您可以宣告斷言並稍後使用它們

<assertions id="project.assertions">
  <enable package="org.apache.test"/>
</assertions>

<assertions refid="project.assertions"/>