2009-06-19 9 views

Respuesta

14

En su objetivo junit, por ejemplo, puede establecer la failureProperty:

<target name="junit" depends="compile-tests" description="Runs JUnit tests"> 
    <mkdir dir="${junit.report}"/> 
    <junit printsummary="true" failureProperty="test.failed"> 
     <classpath refid="test.classpath"/> 
     <formatter type="xml"/> 
     <test name="${test.class}" todir="${junit.report}" if="test.class"/> 
     <batchtest fork="true" todir="${junit.report}" unless="test.class"> 
      <fileset dir="${test.src.dir}"> 
       <include name="**/*Test.java"/> 
       <exclude name="**/AllTests.java"/> 
      </fileset> 
     </batchtest> 
    </junit> 
</target> 

A continuación, cree un objetivo que sólo se ejecuta si la propiedad test.failed está establecido, pero fracasa al final:

<target name="otherStuff" if="test.failed"> 
    <echo message="I'm here. Now what?"/> 
    <fail message="JUnit test or tests failed."/> 
</target> 

Por último, atarlos juntos:

<target name="test" depends="junit,otherStuff"/> 

Luego solo llame al objetivo test para ejecutar sus pruebas JUnit. Se ejecutará el objetivo junit. Si falla (falla o error), se establecerá la propiedad test.failed y se ejecutará el cuerpo del objetivo otherStuff.

La tarea javac admite los atributos failonerror y errorProperty, que se pueden usar para obtener un comportamiento similar.

1

ant-contrib tiene una tarea trycatch.

+0

Lamentablemente, eso no funcionará, ya que todavía quiero que falle la compilación. – tomjen

0

Establezca una propiedad en la tarea para la que desea verificar el error y luego escriba la segunda tarea para que se ejecute si la propiedad no está establecida. No recuerdo las sintaxis exactas de build.xml, o daría ejemplos.

6

como se mencionó desde Kai:

ant-contrib tiene una tarea TryCatch.

Pero necesita la versión 1.0b3 más reciente. Y luego use

<trycatch> 
    <try> 
     ... <!-- your executions which may fail --> 
    </try> 
    <catch> 
     ... <!-- execute on failure --> 
     <throw message="xy failed" /> 
    </catch> 
</trycatch> 

El truco consiste en arrojar un error nuevamente para indicar una compilación rota.

Cuestiones relacionadas