アサーション

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 システムアサーションをオンまたはオフにするフラグ。 いいえ; デフォルトは unspecified です。

システムアサーションが有効にも無効にも設定されていない場合、JVM にアサーション情報は提供されません。現在の JVM のデフォルトの処理は、システムアサーションを無効にすることです。

また、JRE のどの部分が有益なアサーションを備えているかについては、明らかなドキュメントがないことに注意してください。

ネストされた要素

enable

コードの一部でアサーションを有効にします。パッケージもクラスも指定されていない場合、(ユーザー)コード全体でアサーションが有効になります。

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

disable

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

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

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

例: すべてのユーザー クラスでアサーションを有効にする

JRE に含まれていないすべてのクラス(つまり、システムクラスではないすべてのクラス)でアサーションが有効になります。

<assertions>
  <enable/>
</assertions>
例: 1 つのクラスを有効にする

Test という名前のクラスでアサーションを有効にする

<assertions>
  <enable class="Test"/>
</assertions>
例: パッケージを有効にする

org.apache パッケージと org.apache. プレフィックスで始まるすべてのパッケージ(Ant を除く、org.apache.tools.ant.Main を含む)でアサーションを有効にします。

<assertions>
  <enable package="org.apache"/>
</assertions>
例: システムアサーション

Ant を除くすべての org.apache パッケージ(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"/>