assertions
类型用于启用或禁用整个 Java 程序或程序组件的 Java 1.4 断言功能。它可以在 <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"/>