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 的哪些部分附帶有用的斷言,並沒有明確的文件說明。
在程式碼的部分啟用斷言。如果未指定套件或類別,則會在所有(使用者)程式碼中開啟斷言。
屬性 | 說明 | 必要 |
---|---|---|
class | 要啟用斷言的類別名稱。 | 否 |
package | 要在所有類別上啟用斷言的套件名稱。(包括子套件。)對匿名套件使用 ...。 |
否 |
在程式碼的部分停用斷言。
屬性 | 說明 | 必要 |
---|---|---|
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"/>