2012-09-24 12 views
7

Mam JUnit 4.8.2 i maven 3 niektórych testach w mojej aplikacji nie powinno się budować w przypadku awarii, a niektóre z nich nie należy (tylko zgłosić, że następujące testy zawiodły opcjonalne)JUnit opcjonalne/wymagane testy

Jak mogę to zrobić za pomocą junit i jeśli nie mogę, to może testng może?

E.g. Mam dwa przypadki testowe:

Po pierwsze nie jest tak naprawdę ważne i może się nie powieść z powodu przekroczenia limitu czasu połączenia, niedostępności usługi i tak dalej. Więc jeśli nie, ja nie chcę zawieść cały build, tylko niech użytkownik wie o tym i pisać do konsoli

drugie jest bardzo ważne, a jeśli nie - należy budować zawiodły także

Wiem o @Ignore - to nie jest to, czego szukam, ponieważ nie chcę pomijać żadnych testów.

Wiem o @Kategorii, więc jeśli wiesz, jak skonfigurować wtyczkę surefire, powiedz: jeśli kategoria com.me.Required - kompilacja powinna się nie udać w przypadku awarii i jeśli kategoria com.me.Optional - build nie powinna być failed

+0

co dokładnie jest Twoje pytanie? Czy pisałeś przypadki testowe, które się nie powiedzie, czy nie? Jak oni wyglądają? Jak wygląda twój pom? – khmarbaise

+0

Mam zaktualizowane moje pytanie. Proszę spojrzeć na –

Odpowiedz

3

Należy rozważyć użycie wtyczki failsafe do testów, które mogą zakończyć się niepowodzeniem i ustawić flagę testFailureIgnore na true.

Aby use FailSafe wtyczki trzeba włożyć wtyczkę do ciebie 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> 

Wtyczka murowany będzie domyślnie wykonać badanie o nazwie jak Test. Wtyczka failsafe domyślnie wykona test o nazwie takiej jak IT.

Biorąc pod uwagę testy

import static org.junit.Assert.*; 

import org.junit.Test; 

public class SurefireTest { 

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

} 

i

import static org.junit.Assert.*; 

import org.junit.Test; 

public class FailsafeIT { 

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

} 

przebiegu mvn install będzie teraz prowadzić

[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

Czy można zastosować testFailureIgnore do nie wszystkich testów?Nie sądzę, że –

+0

@Sergey Kravchenya Nie sądzę, że ta opcja jest dostępna. Sugeruję więc, aby uruchomić test, który nie powinien zawieść z wtyczką surefire i uruchomić test, który może zakończyć się niepowodzeniem z plusem failsafe (i testFailureIgnore ustawionym na 'true') – FrVaBe

+0

czy możliwe jest posiadanie dwóch tych wtyczek? Jeśli tak, edytuj swoją odpowiedź, a ja oznaczy ją jako zaakceptowaną :) Dzięki –

1