2012-09-24 28 views
7

ho JUnit 4.8.2 e Maven 3 Alcuni test nella mia applicazione dovrebbe fallire l'accumulo in caso di guasto e alcuni di loro non dovrebbero (solo riferire che le seguenti prove facoltative fallito)JUnit opzionali test/richieste

Come posso farlo con junit e se non posso, allora forse testng può?

E.g. Ho due casi di test:

Il primo non è veramente importante e può fallire a causa del timeout della connessione, della non disponibilità del servizio e così via. Quindi, se fallire, non voglio fallire tutta la costruzione, solo per far sapere all'utente su di esso e scrivere a consolare

In secondo luogo è una realtà importante e se fallire - build dovrebbero essere riuscito così

So di @Ignore - non è quello che sto cercando, perché non voglio saltare nessun test.

so di @Category quindi se si conosce come configurare plug sicuro per dire: se categoria com.me.Required - build dovrebbero essere fallito in caso di guasto e se categoria com.me.Optional - build non dovrebbe essere non riuscita

+0

Che cosa è esattamente la tua domanda? Hai mai scritto casi di test che falliranno o no? Come sono? Come è il tuo pom? – khmarbaise

+0

Ho aggiornato la mia domanda. Si prega di dare un'occhiata –

risposta

3

Considerare l'utilizzo del plug-in failsafe per i test che possono fallire e impostare il flag testFailureIgnore su true.

Per use il plugin fail-safe si deve aggiungere il plugin per voi Pom

<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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>foo.bar</groupId> 
    <artifactId>test</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 

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

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-failsafe-plugin</artifactId> 
       <version>2.12.4</version> 
       <executions> 
        <execution> 
         <goals> 
          <goal>integration-test</goal> 
          <goal>verify</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <testFailureIgnore>true</testFailureIgnore> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

Il plugin sarà infallibile per impostazione predefinita l'esecuzione di test chiamato come Test. Il plug-in fail-safe eseguirà per impostazione predefinita il test denominato come IT.

Dato i test

import static org.junit.Assert.*; 

import org.junit.Test; 

public class SurefireTest { 

    @Test 
    public void test() { 
     assertTrue(true); 
    } 

} 

e

import static org.junit.Assert.*; 

import org.junit.Test; 

public class FailsafeIT { 

    @Test 
    public void test() { 
     assertTrue(false); 
    } 

} 

corso mvn install sarà ora tradurrà in

[INFO] Scanning for projects... 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building test 0.0.1-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
. 
. 
. 
------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 
Running SurefireTest 
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.062 sec 

Results : 

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 
. 
. 
. 
------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 
Running FailsafeIT 
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.072 sec <<< FA 
ILURE! 
... 
Results : 

Failed tests: test(FailsafeIT) 

Tests run: 1, Failures: 1, Errors: 0, Skipped: 0 
. 
. 
. 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 3.174s 
[INFO] Finished at: Sat Sep 29 08:19:38 CEST 2012 
[INFO] Final Memory: 9M/245M 
[INFO] ------------------------------------------------------------------------ 
+0

E 'consentito applicare testFailureIgnore a non tutti i test?Io non la penso così –

+0

@Sergey Kravchenya Non penso che questa opzione sia disponibile. Quindi suggerisco di eseguire il test che non dovrebbe fallire con il plugin surefire e di eseguire il test che può fallire con il plugin failsafe (e testFailureIgnore impostato su 'true') – FrVaBe

+0

è possibile avere due di questi plugin insieme? In tal caso, modifica la risposta e la contrassegnerò come accettata :) Grazie –

1
  1. È possibile utilizzare @Ignore, vedere Is there a way to skip only a single test in maven?

  2. È possibile saltare i test in un certo pacchetto Is there a way to tell surefire to skip tests in a certain package? o http://maven.apache.org/plugins/maven-failsafe-plugin/examples/inclusion-exclusion.html o

  3. È possibile utilizzare jun IT 4.8 Categorie JUnit Categorie http://maven.apache.org/plugins/maven-failsafe-plugin/examples/junit.html

  4. È possibile utilizzare skipITs http://maven.apache.org/plugins/maven-failsafe-plugin/verify-mojo.html#skipITs

penso JUnit 4.8 Categorie è in realtà quello che stai cercando.