JUnit 4 Test Suites


99

Jak tworzyć zestawy testów w JUnit 4?

Wydaje się, że cała dokumentacja, którą widziałem, nie działa. A jeśli używam kreatora Eclipse, nie daje mi on możliwości wyboru żadnej z utworzonych przeze mnie klas testowych.


4
Dzięki Eclipse 3.7 Indigo kreator zestawu testów obsługuje teraz JUnit 4
Fabian Steeg

Odpowiedzi:


147
import org.junit.runners.Suite;
import org.junit.runner.RunWith;

@RunWith(Suite.class)
@Suite.SuiteClasses({TestClass1.class, TestClass2.class})
public class TestSuite {
  //nothing
}

61

Możesz stworzyć taki zestaw. Na przykład plikAllTest pakiet wyglądałby mniej więcej tak.

package my.package.tests;

@RunWith(Suite.class)
@SuiteClasses({
    testMyService.class,
    testMyBackend.class,
    ...
})

public class AllTests {}

Teraz możesz to uruchomić na kilka różnych sposobów:

  1. kliknij prawym przyciskiem myszy i uruchom w Eclipse jako Junit test
  2. utworzyć działającą aplikację Java; Klasa główna = 'org.junit.runner.JUnitCore' i Args = 'my.package.tests.AllTests'
  3. uruchom z linii poleceń:

    $ java -cp build/classes/:/usr/share/java/junit4.jar:/usr/share/java/hamcrest-core.jar org.junit.runner.JUnitCore my.package.tests.AllTests

Dodałbym jeszcze więcej głosów na CMDLine :)
Gruber

9

Myślę, że TestSuite wypadł z łask. To mógł być styl sprzed 4.x, ale teraz nie jest tak daleko, jak wiem.

Po prostu opisuję testy, które chcę, a następnie uruchamiam zajęcia. Wszystkie opisane testy są uruchamiane. Mogę używać Ant, ale w większości przypadków IntelliJ uruchamia je za mnie.


11
Mogę się mylić, ale myślę, że TestSuite jest nadal dobry, gdy musimy określić kolejność testów, szczególnie w automatycznych testach integracyjnych, w których testowanie mniejszych scenariuszy powinno poprzedzać bardziej złożone scenariusze.
bertie

@duffymo Uważam, że twój komentarz jest interesujący, ponieważ do tej pory byłem trenowany w myślach pre-4.x dotyczących organizowania przypadków
testowych w zestawy testowe

6
Jeśli masz większą liczbę testów, różne obszary / moduły funkcjonalne, rozróżnienie między testami „podstawowymi” i pomocniczymi / wolniejszymi / kosztownymi testami niezwiązanymi z rdzeniem - z dowolnego z tych powodów - utworzyłbyś strukturę testów w TestSuite.
Thomas W,

1
Możesz używać @SuiteClassadnotacji na wielu zajęciach i możesz zagnieżdżać suity w apartamentach. Myśl o zorganizowaniu ich w 3.x jest nadal w pełni aktualna (i powinna być stosowana). Możesz uporządkować wszystko w taki sam sposób, jak wcześniej; po prostu używasz składni adnotacji zamiast TestSuite.suite(). Naprawdę nie ma żadnych korzyści z używania TestSuitezamiast adnotacji i możesz skorzystać ze wszystkich ulepszeń JUnit 4, jeśli użyjesz adnotacji równoważnej organizacyjnie.
Thunderforge,

3

Oto kroki, aby utworzyć pakiet JUnit w Eclipse:

  1. W widoku „Eksplorator pakietów” w perspektywie „Java” zaćmienia wybierz testy jednostkowe w ich pakiecie wewnątrz projektu eclipse java.
  2. Kliknij prawym przyciskiem myszy dowolny z wybranych testów.
  3. W menu podręcznym wybierz Nowy, Inne…
  4. Otwórz folder „Java”, a następnie otwórz folder „JUnit”
  5. Wybierz „JUnit Test Suite”, a następnie kliknij przycisk „Dalej”
  6. Wybierz przycisk „Zakończ”
  7. Wynik: został utworzony plik pakietu „AllTests.java” z automatycznie dołączonymi testami
  8. Wybierz przycisk Uruchom w zaćmieniu
  9. Wynik: wszystkie testy uruchomione w pakiecie
  10. Możesz teraz wskazać ten plik pakietu za pomocą ANT, Jenkins lub innego narzędzia do ciągłej integracji konfiguracji kompilacji.

Informacje o wersji: dotyczy eclipse Neon i JUnit 4. Możesz także wybrać JUnit 3 przed wybraniem „Zakończ” w kroku 6.


Czy możesz opublikować plik build.xml pokazujący, jak uruchomić ten zestaw testów z ANT?
LiborStefek

1

Z górnej części mojej głowy utwórz TestSuite i wywołaj addTests. Jeśli chcesz, aby jakieś źródło przyjrzało się, wypróbuj dowolną bibliotekę open source, taką jak hibernacja lub coś z Apache, i zajrzyj do katalogu testowego źródła pakietu Tests ...

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.