AspectJ-Erweiterung - Übersicht

PatternTesting-Tools sind eine Erweiterung für den AspectJ-Compiler, um die Ausgabe der ajc-Fehlermeldungen in ein XML-Format zu überführen. Es ist als Erweiterung der AspectJ-Ajc-Ant-Task implementiert.

Beispiele

Hier ein Beispiel, wie man es aus einer Java-Anwendung aus aufrufen kann:

AjcXml compiler = new AjcXml();

compiler.createSrc().setPath("src/aspect");
compiler.setDestdir("target/classes");
compiler.setResultFile("result.xml");

compiler.execute();

Und hier ein Beispile, wie man es aus einem Ant-Skript heraus verwenden kann:

<taskdef name="ajcxml" classname="patterntesting.tool.aspectj.AjcXmlTask" >
    <classpath>
        <pathelement path="${aspectj.home}/lib/aspectjtools.jar" />
        <pathelement path="${m2.repo}/commons-io/commons-io/1.4/commons-io-1.4.jar" />
        <pathelement path="${m2.repo}/commons-lang/commons-lang/2.3/commons-lang-2.3.jar" />
        <pathelement path="${m2.repo}/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar" />
        <pathelement path="${m2.repo}/org/patterntesting/patterntesting-rt/1.0.0-SNAPSHOT/patterntesting-rt-1.0.0-SNAPSHOT.jar" />
        <pathelement path="${m2.repo}/org/patterntesting/patterntesting-tools/1.0.0-SNAPSHOT/patterntesting-tools-1.0.0-SNAPSHOT.jar" />
        <pathelement path="${target.classes.dir}"/>
    </classpath>
</taskdef>

<target name="compile.ajcxml" depends="init"
        description="compile sources with AjcXmlTask" >
    <ajcxml destdir="${target.classes.dir}" resultFile="target/patterntesting-output.xml">
        <src path="src/test/sample"/>
        <classpath>
            <pathelement path="${aspectj.home}/lib/aspectjrt.jar" />
        </classpath>
    </ajcxml>
</target>

The default output format of the resulting file is XML. If you want it as plain text, use the attribute "formatter" with the value "plain".

<target name="compile.ajcxml.plain" depends="init"
        description="compile sources with AjcXmlTask (with plain text as output)" >
    <ajcxml destdir="${target.classes.dir}" resultFile="target/patterntesting-output.txt"
           formatter="plain">
        <src path="src/test/sample"/>
        <classpath>
            <pathelement path="${aspectj.home}/lib/aspectjrt.jar" />
        </classpath>
    </ajcxml>
</target>

Einsatzbereich

Es kann innerhalb von Testfällen verwendet werden, wenn man bestimmte Ergebnisse der AspectJ-Compilation garantieren will. Beispiel: du hast einen Aspekt, der eine bestimmte Fehlermeldung zur Folgen haben soll. Mit PatternTesting-Tool kannst du dies über die erzeugte XML-Ausgabe zusichern, indem du sie z.B. mit XMLUnit überprüfst.

Zusätzlich ist es meist hiflreich, einen Compilations-Report zu erstellen. Der kann dann einfach mit DVSL in einen HTML-Report umgewandelt werden.