Ihre Frage wirft eine offensichtliche Frage im Gegenzug auf, warum nicht einfach Maven verwenden, um JUnit zu betreiben? Die surefire plugin führt alle Tests (in der Testphase) aus, die in der Test-Compile-Phase in Target/Test-Klassen kompiliert wurden (normalerweise der Inhalt von src/test/java). Es gibt eine JavaWorld article Einführung in die Verwendung von Junit mit Maven
Angenommen, Sie haben einen gültigen Grund Ant zu verwenden, um die Tests aufzurufen, müssen Sie sicherstellen, dass Ant ist fehlgeschlagen, wenn die Tests ungültig sind. Sie können dies tun, indem Sie JUnit task konfigurieren. Die Eigenschaften, die Sie einstellen möchten, sind haltonerror oder Haltonfailure. Alternativ können Sie eine Eigenschaft für einen Fehler festlegen und den Ant-Build selbst unter Verwendung der Eigenschaft failureproperty fehlschlagen.
Ich habe zwei Beispiele aufgenommen, um einen Ant-Fehler zu demonstrieren, der einen Maven-Build-Fehler verursacht. Der erste ist ein direkter Aufruf der fehlgeschlagenen Aufgabe, der zweite Aufruf einer Aufgabe in einer build.xml auf die gleiche Weise wie Sie es getan haben.
Dieses triviale Beispiel zeigt, dass eine Ameise Ausfall verursacht ein Maven zum Scheitern verurteilt bauen:
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>test</phase>
<configuration>
<tasks>
<fail message="Something wrong here."/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
[INFO] [antrun:run {execution: default}]
[INFO] Executing tasks
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] An Ant BuildException has occured: Something wrong here.
Erweiterung des Beispiels eine Ameise Aufruf zu verwenden, wie Sie haben:
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>test</phase>
<configuration>
<tasks unless="maven.test.skip">
<ant antfile="${basedir}/build.xml" target="test">
<property name="build.compiler" value="extJavac" />
</ant>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
Mit build.xml wie:
<?xml version="1.0"?>
<project name="test" default="test" basedir=".">
<target name="test">
<fail message="Something wrong here."/>
</target>
</project>
gibt den folgenden Fehler:
[INFO] [antrun:run {execution: default}]
[INFO] Executing tasks
test:
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] An Ant BuildException has occured: The following error occurred while executing this line:
C:\test\anttest\build.xml:4: Something wrong here.
Danke für Ihre Antwort! Der Grund, warum ich Ameisen verwende, um den Test auszuführen, ist, dass die Benutzeroberfläche meiner Anwendung in Netbeans Platform erfolgt. Die Plattform bietet fertige ant-Build-Dateien, die ich nicht portieren möchte. Ein Unterschied zwischen Ihrem Beispiel und dem, was ich beim Ausführen des Netbeans Platform-Buildziels erfahre, ist, dass in Ihrem Beispiel ein "BUILD ERROR" auftritt, während der Platform-Build eine "BUILD FAILED" -Meldung gibt.Vielleicht läuft Maven gegen sowas wie Junit's Aufgabe "Haltonerror", aber keine "Haltonfailure"? –