2010-01-28 4 views
2

J'exécute des tests Junit de Maven. Le script fourmi aComment arrêter Maven quand JUnit échoue?

<junit failureproperty="failproperty" errorproperty="errorproperty">   
        <classpath refid="classpath" /> 
        <test name="${unit-test-suite}" /> 
        <formatter type="brief" usefile="false" /> 
     </junit> 

     <echo> ----------> ${failproperty} </echo> 
     <echo> ----------> ${errorproperty} </echo> 
     <fail message="something wrong" if="${failureproperty}"/> 
     <fail message="something wrong" if="${errorproperty}"/> 

J'ai essayé

  • Stopper en cas d'erreur ou d'échec dans Junit - Cela permet d'arrêter quand je lance le script fourmi seulement, mais la construction réussit à Maven et ne s'arrête même pas pensé JUnit a une erreur

    • J'ai essayé d'envoyer un message d'échec en définissant la propriété error et la propriété d'échec - Cela ne définit pas les variables.

Comment puis-je dire Maven tout arrêter en cas d'échec Junit?

Maven Détails:

Maven version: 2.0.10 
Java version: 1.6.0_17 
OS name: "windows xp" version: "5.1" arch: "x86" Family: "windows" 

Répondre

1

Cette "échec rapide" fonctionnalité n'est pas pris en charge par Maven 2, voir SUREFIRE-580 (et peut-être voter pour elle). Etes-vous sûr de bien définir les propriétés?

0

Notez que les attributs if et unless prennent des noms de propriété, pas des expressions. Par exemple, essayez d'utiliser:

<fail if="failproperty"/> au lieu de <fail if="${failproperty}"/>

La balise <fail/> fonctionne dans cet exemple simple. Essayez mvn package puis mvn package -Dfailproperty=true

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>ant-test</groupId> 
    <artifactId>ant-test</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.7</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-antrun-plugin</artifactId> 
       <executions> 
        <execution> 
         <id>ant-test</id> 
         <phase>package</phase> 
         <configuration> 
          <tasks> 
           <junit failureproperty="fail"> 
            <classpath> 
             <path refid="maven.plugin.classpath"/> 
             <path refid="maven.test.classpath"/> 
            </classpath> 
            <formatter type="plain" /> 
            <batchtest> 
             <fileset dir="src/test/java"/> 
            </batchtest> 
           </junit> 
           <fail if="fail"/> 
          </tasks> 
         </configuration> 
         <goals> 
          <goal>run</goal> 
         </goals> 
        </execution> 
       </executions> 
       <dependencies> 
        <dependency> 
         <groupId>org.apache.ant</groupId> 
         <artifactId>ant-junit</artifactId> 
         <version>1.7.1</version> 
        </dependency> 
       </dependencies> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <configuration> 
        <skipTests>true</skipTests> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

En supposant un test dans src/test/java:

import junit.framework.Assert; 

import org.junit.Test; 

public class FakeTestCase { 

    @Test 
    public void testThis() { 
     Assert.fail("Failure"); 
    } 

} 
+0

si je passe dans les arguments comme vous le faites alors oui cela fonctionne, mais l'échec propriété ne soit pas définie si je lance de maven même quand je reçois une erreur JUnit. Essayez-le dans votre projet – unj2

+0

Cela fonctionne. Voir le projet mis à jour – Kevin

Questions connexes