JUnit ErrorCollector @Rule z przykładem

Spisie treści:

Anonim

W normalnym scenariuszu za każdym razem, gdy zidentyfikujesz błąd podczas wykonywania testu, należy zatrzymać test, naprawić błąd i ponownie uruchomić test.

Ale JUnit ma nieco inne podejście. Dzięki modułowi zbierania błędów JUnit możesz kontynuować wykonywanie testu nawet po znalezieniu problemu lub niepowodzeniu testu. Moduł zbierania błędów zbiera wszystkie obiekty błędów i zgłasza je tylko raz po zakończeniu wykonywania testu.

W tym samouczku nauczysz się:

  • Co to jest zbieracz błędów w JUnit?
  • Czym jest @Rule w jUnit?
  • Przykład z użyciem ErrorCollector
  • Korzyści z JUnit ErrorCollector

Dlaczego warto korzystać z narzędzia Error Collector?

Pisząc skrypt testowy, chcesz wykonać wszystkie testy, nawet jeśli jakakolwiek linia kodu nie powiedzie się z powodu awarii sieci, błędu potwierdzenia lub z innego powodu. W takiej sytuacji nadal można kontynuować wykonywanie skryptu testowego przy użyciu specjalnej funkcji udostępnianej przez JUnit, znanej jako „moduł zbierający błędy”.

W tym celu JUnit używa adnotacji @Rule, która służy do tworzenia obiektu kolektora błędów. Po utworzeniu obiektu kolektora błędów można łatwo dodać wszystkie błędy do obiektu za pomocą metody addError (błąd Throwable). Jak wiesz, Throwable to super klasa wyjątków i klas błędów w Javie. Gdy dodasz błędy w ten sposób, zostaną one zarejestrowane w wyniku testu JUnit.

Zaletą dodawania wszystkich błędów w module zbierania błędów jest to, że można zweryfikować wszystkie błędy naraz. Ponadto, jeśli skrypt zawiedzie w środku, nadal może go wykonywać

Uwaga : W przypadku korzystania z prostego bloku assert lub try / catch użycie metody zbierania błędów nie będzie możliwe.

Przykładowy kod

Aby dowiedzieć się więcej na temat narzędzia Error Collector, zobacz poniższy przykład kodu, który pokazuje, jak utworzyć obiekt Error Collector i dodać wszystkie błędy w tym obiekcie, aby śledzić problem:

pakiet guru99.junit;import org.junit.Rule;import org.junit.Test;import org.junit.rules.ErrorCollector;public class ErrorCollectorExample {@Regułapublic Collector ErrorCollector = nowy ErrorCollector ();@Testpublic void example () {collector.addError (new Throwable ("Wystąpił błąd w pierwszej linii"));collector.addError (new Throwable ("Wystąpił błąd w drugiej linii"));collector.checkThat (getResults (),not (zawieraString ("tutaj jest błąd")));// wszystkie wiersze kodu zostaną wykonane, a na końcu połączona awariabyć zalogowanym.}}

Czym jest @Rule w jUnit?

JUnit zapewnia specjalny rodzaj obsługi testów, przypadków testowych lub zestawu testów za pomocą adnotacji @rule . Używając @rule, możesz łatwo dodać lub przedefiniować zachowanie testu.

Istnieje kilka wbudowanych reguł udostępnianych przez JUnit API, z których może korzystać tester, a nawet Ty możesz napisać własną regułę.

Zobacz poniższy wiersz kodu, który pokazuje, jak używać adnotacji @rule wraz z narzędziem Error Collector:

@Regułapublic Collector ErrorCollector = nowy ErrorCollector ();

Przykład z użyciem ErrorCollector

Aby zrozumieć kolektor błędów, stwórzmy klasę i regułę, która zbierze wszystkie błędy. Wszystkie błędy dodasz tutaj za pomocą addError (throwable).

Zobacz poniższy kod, który po prostu tworzy regułę, która jest niczym innym, jak tworzeniem „obiektu Error Collector”. Który jest następnie używany do dodawania wszystkich błędów w celu zgłoszenia problemu na końcu:

ErrorCollectorExample.java

pakiet guru99.junit;import org.junit.Assert;import org.junit.Rule;import org.junit.Test;import org.junit.rules.ErrorCollector;public class ErrorCollectorExample {@Regułapublic Collector ErrorCollector = nowy ErrorCollector ();@Testpublic void example () {collector.addError (new Throwable ("Wystąpił błąd w pierwszej linii"));collector.addError (new Throwable ("Wystąpił błąd w drugiej linii"));System.out.println ("Witaj");próbować {Assert.assertTrue ("A" == "B");} catch (Throwable t) {collector.addError (t);}System.out.println ("Świat !!!!");}}

TestRunner.java

Dodajmy powyższą klasę testową do modułu uruchamiającego testy i uruchommy ją, aby zebrać wszystkie błędy. Zobacz poniższy kod:

pakiet guru99.junit;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) {Wynik wynikowy = JUnitCore.runClasses (ErrorCollectorExample.class);for (Failure failure: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println ("Wynik ==" + result.wasSuccessful ());}}

Wynik:

Zobacz ślad awarii, który śledzi wszystkie błędy w jednym miejscu:

Korzyści z JUnit ErrorCollector

Możesz użyć asercji JUnit do walidacji funkcjonalnej lub sprawdzania poprawności GUI, np

  1. assertEquals (komunikat typu String, oczekiwany obiekt, faktyczny obiekt), które porównują, że dwa obiekty są równe.
  2. Podobnie assertTrue (warunek logiczny) potwierdza, że ​​warunek jest prawdziwy.

Używając asercji, test walidacyjny staje się łatwy. Ale jednym z głównych problemów jest to, że wykonywanie testów zostanie zatrzymane, nawet jeśli jedno stwierdzenie nie powiedzie się.

Ciągłość testów i obsługa odzyskiwania danych ma kluczowe znaczenie dla sukcesu automatyzacji testów. Kolektor błędów to najlepszy sposób na obsługę tego typu scenariuszy.

Podsumowanie :

  • Moduł zbierający błędy Junit umożliwia kontynuowanie testu nawet po znalezieniu pierwszego problemu i kończy się niepowodzeniem
  • Kolektor błędów zbiera wszystkie obiekty błędów i zgłasza je dopiero po zakończeniu wykonywania testu
  • Zaletą dodawania wszystkich błędów w module zbierania błędów jest to, że można zweryfikować wszystkie błędy naraz
  • Moduł zbierający błędy po prostu dodaje błędy za pomocą metody addError (throwable err) udostępnionej przez ErrorCollector.java.