JUnit5 w projekcie Androida
Kiedy tworzysz nowy projekt Androida, junit4zależność otrzymujesz automatycznie. Jednak JUnit5 to następna generacja JUnit , więc dlaczego nie przeprowadzić migracji domyślnej zależności JUnit4 do nowej, błyszczącej JUnit5? Następnie możemy przyjrzeć się niektórym fantazyjnym funkcjom JUnit5.
Uwaga: skupię się tylko na migracji nowo utworzonej aplikacji. Jeśli masz projekt, który ma już testy JUnit4, będziesz mieć więcej kroków do pełnej migracji do JUnit5 .
Migracja JUnit5 z JUnit4
Ponieważ nie mamy żadnego testu w nowo utworzonej aplikacji na Androida (innego niż assertEquals(4, 2 + 2)przykładowy test), możemy śmiało zmienić zależność na .testImplementation(“org.junit.jupiter:junit-jupiter:5.9.2”)
Kiedy zsynchronizujemy Gradle, będziemy mogli zastąpić adnotację @Test i potwierdzić import.
Jednak po usunięciu starego importu i próbie uruchomienia testu zakończy się niepowodzeniem z powodu następującego błędu.
Drugim i ostatnim akcentem, aby JUnit5 działał, jest dodanie następującego kodu w zakresie androidw pliku build.gradle.
Uwaga: zajrzyj do „ Informacji o wtyczce Android DSL ” w pliku testOptions. Świetny zasób.
Teraz ExampleUnitTestpowinno przejść.
Niektóre fantazyjne funkcje JUnit5
Jeśli chcesz zasilić swój test wieloma wartościami, @ParameterizedTest jest tym, czego szukasz. Zaimplementowany test działa dla każdego podanego źródła. Poniższy test przebiega 6 razy. 4 razy dla wartości ciągu + 1 raz dla wartości null + 1 raz dla pustego ciągu.
Inną przydatną, prostą i wydajną adnotacją dla sparametryzowanych testów jest @EnumSource . Mam 2 przykładowe kody wycięte dla tego „Źródła argumentów”.
Jedna metoda, aby uruchomić je wszystkie
Kiedy mamy klasę wyliczeniową, która jest tak powszechna, że ma wspólną regułę dla wszystkich z nich. @EnumSource to adnotacja, którą chcemy przetestować tego rodzaju scenariusze.
Powyższy test dotyczy właściwości klasy enum. Moglibyśmy mieć test dla innej funkcji, która również używa klasy enum. Główną ideą jest objęcie wszystkich wartości wyliczeniowych w jednym teście.
Tylko podzbiór klasy Enum
Mamy tę samą klasę enum z dodatkową właściwością.
JUnit5 pomaga nam kierować określone wartości wyliczeniowe do testowania w intuicyjny sposób.
Wszystko, co musimy zrobić, to dodać wartości łańcuchowe nazw wyliczeniowych.
Sprawdź @MethodSource, aby przekazać wiele parametrów, a także obiekty klas, które nie są obsługiwane przez @ValueSource.
Testy dynamiczne
Jest to ważny dodatek do JUnit4, ponieważ daje większą kontrolę testerom z Executables. (Oczywiście wygląda to znacznie lepiej na Kotlinie ) Kolejność wykonania jest moim osobistym faworytem. Muszę jeszcze z nim więcej popracować, aby móc powiedzieć coś więcej o jego działaniu lub zaletach.
Oto próbka, która moim zdaniem byłaby przydatna.
Załóżmy, że mamy model widoku, który ma stan interfejsu użytkownika bieżącej strony. Zasada, którą chcemy przetestować, polega na tym, że przyrosty stron mają miejsce, dopóki bieżąca strona nie osiągnie 10. Kolejność jest ważna. Zobaczmy, jak test dynamiczny mógłby nam pomóc.
Mogliśmy więc napisać ten kod z prostą adnotacją @Test, jednak gdy przepływy i logika stają się skomplikowane, radzenie sobie z s DynamicTestbyłoby łatwiejsze. Wydaje mi się, że jest całkiem czysty.
Jak powiedziałem, muszę przeprowadzić więcej eksperymentów z testem dynamicznym, ale wygląda to obiecująco.
Teraz wiesz, jak zacząć pisać testy JUnit5 dla nowo utworzonego projektu Androida. Wiesz również, że adnotacja @ParameterizedTest jest bardzo użyteczna i łatwa do napisania. Wreszcie, jeśli chcesz ulepszyć swoją grę z testowaniem jednostek, wiesz, że test dynamiczny jest sposobem na przejście na JUnit5.
Nie zapomnij klaskać i subskrybować. Zostaw komentarz na temat tego, co myślisz o testach jednostkowych w rozwoju Androida, a także dodaj to, co mogłem dodać do tego artykułu.

![Czym w ogóle jest lista połączona? [Część 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































