2017-03-17 24 views
5

On, wszyscy! Moje testy są prowadzone przez jenkins z ogólnego pakietu. Czy mogę ustawić pakiet testowy w spocku, który będzie działał pierwszy i jeśli w tym pakiecie nie przejdzie żadne z testów, pozostałe testy powinny zostać pominięte. Widziałem przykłady takiego:Testy zamówień Spocka przez pakiety

import org.junit.runner.RunWith; 
import org.junit.runners.Suite;  
@RunWith(Suite.class)  
@Suite.SuiteClasses({TestJunit1.class, TestJunit2.class})  
    public class JunitTestSuite { 
    } 

Ale może Spock ma rozwiązanie, w którym mogę zamiast używać pakietów enum każdej klasy, ponieważ mam wiele klas testowych w innych wielu pakietów. również po tym, jak stosowane lekkoatleta

import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 

public class TestRunner { 
    public static void main(String[] args) { 
    Result result = JUnitCore.runClasses(JunitTestSuite.class);  
     for (Failure failure : result.getFailures()) { 
     System.out.println(failure.toString()); 
     }   
     System.out.println(result.wasSuccessful()); 
    } 
} 

Głównym zatrzymania gwint robi. Nie wiem dlaczego. chcę zrobić coś takiego:

import org.junit.runner.RunWith; 
import org.junit.runners.Suite;  
@RunWith(Suite.class)  
@Suite.SuiteClasses({com.example.test.*.class})  
    public class JunitTestSuiteFirst { 
    } 

import org.junit.runner.RunWith; 
import org.junit.runners.Suite;   
@RunWith(Suite.class)   
@Suite.SuiteClasses({com.example.otherTest.*.class, com.example.otherTests2.*.class})   
    public class JunitTestSuiteFirst { 
    } 

import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 

public class TestRunner { 
    public static void main(String[] args) { 
     Result result = JUnitCore.runClasses(JunitTestSuite.class);  
     for (Failure failure : result.getFailures()) { 
     System.out.println(failure.toString()); 
     } 
     if(result.wasSuccessful()){ 
     JUnitCore.runClasses(JunitTestSuite.class); 
     }else { 
     System.out.println("Build failed"); 
     } 
    } 
} 

A może istnieć bardziej proste rozwiązanie tego zadania. Dzięki.

Odpowiedz

0

Wszystko, co można opracować w ramach testowania urządzenia, nie będzie ładne. Wynika to z faktu, że testy jednostkowe powinny być niezależne od siebie, przy takim nastawieniu nie będzie silnego wsparcia dla konfiguracji kolejności testów. Najlepszym rozwiązaniem jest poszukiwanie rozwiązania w narzędziach do budowy (Ant, Maven, Gradle itp.).

Poniższy opis ukazuje 2 różne zestawy/katalogi testów jednostkowych. Za pomocą polecenia gradle test integrationTest build testy pod kontrolą src/integracją będą wykonywane tylko wtedy, gdy wszystkie testy w src/test przejdą pomyślnie.

sourceSets { 
    integrationTest { 
     java { 
      srcDirs = ['src/integration'] 
     } 
     groovy { 
      srcDirs = ['src/integration'] 
     } 
     resources.srcDir file('src/integration/resources') 
    } 

    test { 
     java { 
      srcDirs = ['src/test'] 
     } 
     groovy { 
      srcDirs = ['src/test'] 
     } 
    } 
} 
+0

Wszystkie moje testy znajdują się w jednym pakiecie. Tak, po kilku próbach. Dodałem kolejność uruchamiania w gradle file. Dodałem wykluczenie w jednym zadaniu dla pakietu i uwzględniłem tylko potrzebny pakiet w innym zadaniu. I ustaw zależy między tymi zadaniami –

Powiązane problemy