2012-09-18 16 views
14

Już wkrótce wdroży ramę testową z Maven + TestNG + Selenium.Pakiet TestNG.xml w celu uwzględnienia wszystkich pakietów wszystkich plików

Jak zadeklarować pakiet suite.xml, który mówi TestNG, aby uruchomić testy ALL? Próbowałem wszystko to bezskutecznie:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="Toplevel TestNG configuration" verbose="10"> 
    <test name="all"> 
    <classes> 
     <class name="*" /> 
    </classes> 
    </test> 
</suite> 

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="Toplevel TestNG configuration" verbose="10"> 
    <test name="all"> 
    <groups> 
     <run> 
     <include name="*" /> 
     <exclude name="disabled" /> 
     </run> 
    </groups> 
    </test> 
</suite> 

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="Toplevel TestNG configuration" verbose="10"> 
    <test name="all"> 
    <packages> 
     <package name="*" /> 
    </packages> 
    </test> 
</suite> 

trzeba określić różne konfiguracje łazienką z różnymi paramers ale wszystkie uruchomione wszystkie testy. Każdy przykład, który mogę wykopać, wyraźnie wymienia każdą klasę lub paczkę, która ma dla mnie mniej niż zero sensu.

+0

Podobnie uważam to za naprawdę dziwaczne. Wydaje się nie tylko możliwe, ale * łatwe * tworzenie testu TestNG w katalogu 'test', jak można się spodziewać, ale nie aktualizuje' testng.xml' i lo i oto, test nie jest faktycznie uruchamiany jako część pakietu ... – dimo414

Odpowiedz

7

Możesz dodać wszystkie klasy testowe wewnątrz opakowania deklarując testng.xml jak plik

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="sampleTest" parallel="false"> 

    <test name="sample-Test" preserve-order="true" verbose="2"> 
     <packages> 
      <package name="org.sample.something.*"/> 
     </packages> 
    </test> 

</suite> 

Nie ma nigdzie przejść testy jak opcje wyszukiwania. Jeśli chcesz coś takiego zrobić, musisz zaimplementować pakiet w kodzie i zaimplementować tam scenariusz wyszukiwania.

+1

Lista setek paczek i tysięcy zajęć to z pewnością coś, czego nie zamierzam robić. Dlaczego ja bym to zrobił? Jest to zbędna informacja. Maven + TestNG może domyślnie znaleźć wszystkie testy, dlaczego funkcja ta jest tracona podczas określania pakietu? (Z jedynym zamiarem dodania parametrów ...) – sibidiba

+3

Twoje nazwy paczek mogą być wyrażeniami regularnymi, pozwolą ci uruchomić wszystko. Jest to dość kosztowne, ponieważ testNG musi przejść całą ścieżkę klasy, aby to zrobić. –

+0

Dokładnie tego, czego szukam. Dlaczego class = "\ *" nie działa? (Przechodzenie przez ścieżkę klasy nie jest drogie, ponieważ zdarza się tylko raz przy starcie. Ręczne wyświetlanie każdej klasy/paczki * jest * drogie i podatne na błędy). – sibidiba

1

AFAIK testng nie ma opcji wykupu tak, jak tego szukasz.

Ale myślę, że można dostać to, co chcesz na dwa sposoby:

  1. Jeśli pracujesz na Eclipse z wtyczką TestNG. Możesz po prostu wybrać folder testowy, który ma wszystkie zdefiniowane pakiety. Z mavenem będzie to najczęściej folder src/test/java, kliknięcie prawym przyciskiem myszy i polecenie Uruchom jako testng. To, co by to zrobiło, spowodowałoby utworzenie tymczasowego pliku customsuite.xml, który zawierałby wszystkie twoje klasy. Możesz zapisać xml jako domyślny xml.

  2. Wtyczka surefire z mavenem ma opcję określenia includes, a następnie wzorca. Możesz spróbować ustawić go na * / .java, co prawdopodobnie pobrałoby wszystkie testcases (nie próbowałem jednak). Możesz wtedy wywołać swoje testy jako test mvn.

+0

W jaki sposób jest to customsuite.xml zaprojektowane przez TestNG po kliknięciu na pakiet ? – R11G

+0

Musi być w kodzie wtyczek. Czy dostałem twoje pytanie ...? –

+0

Tak. Myślę, że na to odpowiedziałeś. Customsuite xml został zaprojektowany w oparciu o kod wtyczek. W szczególności, o której wtyczce mówimy? – R11G

17

Należy użyć. * Dopasować je wszystkie, o ile wiem.

+3

to jest to!

+0

Dziękujemy! bardzo pomocne –

2

Załóżmy, że masz pakiet trzy poziomy, twoje klasy testowe są w pakiecie com.abc.xyz.

<package name="*" /> </packages> , doesn't work. 
<package name="com.*.*" /> doesn't work. 
<package name="com.abc.*" /> does work. 
+0

Z testów, które właśnie zrobiłem, następowałyby również następujące czynności: ' ' –

+0

dziękuję Dave, wydawało się, że jest to wyrażenie regularne, a nie proste wieloznaczne. Tak jak powiedział Luis. * Dopasuj wszystko. więc com. * będzie pasować do każdego under com.abc również comabc.abc (tylko odgadnąć) – nighteblis

Powiązane problemy