アサーション

アサーション型は、Java 1.4 のアサーション機能を Java プログラム全体かプログラムのコンポーネントごとに有効にしたり無効にしたりします。これは、<java><junit> の中でコードに対して特別な検証を追加するのに使うことができます。

アサーションは、J2SDK 1.4 ドキュメントJava言語仕様 でカバーされています。

注意するキーポイントは、アサーションに失敗したときに java.lang.AssertionError がスローされることと、この機能は Java 1.4 以降でのみ利用できることです。 アサーションを有効にするためには、ソースをコンパイルするときに <javac>source="1.4"(またはそれ以降)を設定し、コードに検証するための assert ステートメントが含まれていなければなりません。このようにした結果、 以前のバージョンの Java ではコンパイルしたり実行したりすることができないコードになります。 このような理由のため Ant 自身は現在、アサーションを含んでいません。

タスク内のネストしたアサーション要素によって、アサーションが有効(または無効)になったとき、 クラスローダやコマンドラインを適切なオプションによって修正します。これは、たとえコード内に アサーションが無かったとしても、実行する JVM は Java 1.4 かそれ以降でなければなりません。 以前の VM でアサーションを有効にして試してみると、"Unrecognized option" エラーという結果になり、 JVM を開始できません。

属性

属性 説明 必須
enableSystemAssertions システムアサーションをオンまたはオフに切り替えるためのフラグ。 No; デフォルトは "unspecified"

システムアサーションが有効でも無効でもない場合は、その結果、JVM にはどんなアサーション情報も与えられません - 現在の JVM のデフォルトの動作は、システムアサーションを無効にします。

JRE にどのような有用なアサーションが含まれているのか明らかにする文書はないことに注意してください。

ネストされる要素

enable

コードの一部でアサーションを有効にします。 package も class も定義されていない場合、すべての(ユーザの)コードのアサーションをオンにします。

属性 説明 必須
class アサーションを有効にするクラスの名前。 No
package すべてのクラスでアサーションを有効にするパッケージの名前。(サブパッケージも含みます。) 匿名パッケージには "..." を使います。 No

disable

コードの一部分でアサーションを無効にします。

属性 説明 必須
class アサーションを無効にするクラスの名前。 No
package すべてのクラスでアサーションを無効にするパッケージの名前。(サブパッケージも含みます。) 匿名パッケージには "..." を使います。 No

アサーションはデフォルトで無効になっているため、親パッケージが有効になっている場合にのみアサーションを無効とすることに意味があります。

例: すべてのユーザクラスでアサーションを有効
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"/>

Copyright © 2003-2004 The Apache Software Foundation. All rights Reserved.

[訳注: これは浦本 和則が翻訳しました。日本語訳に対するコメントがあれば、 report@jajakarta.orgに送って下さい。]