About

Aptina Unit

プロジェクト文書

Built by Maven

Aptina Unit

Aptina Unit は, Pluggable Annotation Processing API (JSR 269) を利用した注釈処理ツールの単体テストを支援する JUnit 拡張を提供します.

Usage

Aptina Unit は,Aptina Unit の Jar ファイルをクラスパスに設定するだけで使うことができます.

Aptina Unit の Jar ファイルは こちら からダウンロードしてください.

Maven での使い方

Maven を Java6 以降で実行する必要があります.

pom.xml に Seasar プロジェクトの Maven リポジトリを追加します.

<repositories>
  <repository>
    <id>maven.seasar.org</id>
    <name>The Seasar Foundation Maven2 Repository</name>
    <url>http://maven.seasar.org/maven2</url>
  </repository>
</repositories>

依存ライブラリに Aptina Unit を追加します.

<dependency>
  <groupId>org.seasar.aptina</groupId>
  <artifactId>aptina-unit</artifactId>
  <version>x.y.z</version>
  <scope>test</scope>
</dependency>

AptinaTestCase

AptinaTestCase は JUnit の TestCase を拡張したクラスで, テストメソッドの中で Java Compiler API (JSR 199) を使用して実際に Java コンパイラを起動し, 注釈処理ツールの単体テストを可能にします.

テストクラスを IDE で起動すれば, Annotation Processor のデバッグも容易にできます.

注釈処理ツールのテストクラスを作成するには, AptinaTestCase のサブクラスを作成します.

次のサンプルは, src/test/java フォルダにある TestSource.java をコンパイルすると, foo.bar.Baz クラスのソースを生成する注釈処理ツール (TestProcessor) のテストクラスです.

public class TestProcessorTest extends AptinaTestCase {

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        // ソースパスを追加
        addSourcePath("src/test/java");
    }

    public void test() throws Exception {
        // テスト対象の Annotation Processor を生成して追加
        TestProcessor processor = new TestProcessor();
        addProcessor(processor);

        // コンパイル対象を追加
        addCompilationUnit(TestSource.class);

        // コンパイル実行
        compile();

        // テスト対象の Annotation Processor が生成したソースを検証
        assertEqualsGeneratedSource("package foo.bar; public class Baz {}",
                "foo.bar.Baz");
    }

}

テスト対象の Annotation Processor が生成する Java ソースやリソースは, ファイルシステム上ではなくメモリ上に作成されます. AptinaTestCase は,生成された Java ソースやリソースの内容を取得するメソッドや, 内容を検証する assert メソッドも提供します.

詳細は AptinaTestCaseJavadoc を参照してください.