Patatajam na Confiturę po raz wtóry

W zeszłym roku zaufaliście mi i mogłem wystąpić na scenie Confitury. Skończyło się to jak się skończyło 🙂 W tym roku spotkamy się raz jeszcze. Tym razem będę mówić o JUnit 5 🙂 Dziękuję za zaufanie i wiarę, że dam radę. Kod jest dostępny na licencji MIT. Jednak niektóre rozwiązania mogą być objęte inną licencją. […]

JUnit 5 – założenia i twierdzenia

Istotą każdego testu jest sprawdzenie jakiegoś twierdzenia. Testy bez asercji są jak porno bez fabuły. Wszystko się jebie i w sumie nie wiadomo dlaczego. Dziś przyjrzymy się jakie możliwości w tym zakresie oferuje nam JUnit 5. Założenia Czyli to, co występuje pod nazwą Assumptions. Mechanizm ten znamy już z poprzedniej wersji frameworku i w nowej […]

JUnit 5 – Rozszerzenia i wstrzykiwanie zależności, część 2

W poprzednim wpisie zajmowaliśmy się standardowymi implementacjami ParameterResolver. Na zakończenie wspomniałem, że własna implementacja wymaga konfiguracji na poziomie silnika testów. Takie podejście jest uciążliwe i wiąże się m.in. z implementacją własnego silnika lub hackowaniem istniejącego. To jest trochę krzywe. Twórcy biblioteki JUnit 5 mając świadomość, że takie rozwiązanie jest kiepskie, przygotowali mechanizm rozszerzeń. Rozszerzenia można […]

Scalar 2017, czyli najmodniejszy buzz word Scali to…

… oczywiście typeclass i monad transformer. W dodatku zrobiony shapelessem albo catsami. Zamiast opowiadania o poszczególnych prezentacjach, podzielę się z wami tylko tymi, które moim zdaniem trzeba obejrzeć, jak tylko ukażą się nagrania. Dave Gurnell – Adventures in Meta-Programming Ciekawe porównanie trzech technik metaprogramowania w Scali. Makra, Shapeless i generowanie kodu. Każda z tych metod […]

JUnit 5 – Rozszerzenia i wstrzykiwanie zależności, część 1

Mechanizm runnerów znany z JUnit 4 był przydatny, ale ograniczony jak prędkość w strefie zamieszkania. Główną wadą był brak możliwości użycia wielu runnerów naraz. Musieliśmy się zdecydować, czy chcemy użyć runnera do Springa, Mockito czy może do parametrów. To był poważny problem. Decydując się na jeden z runnerów, zgadzaliśmy się, na ręczną konfigurację reszty elementów […]

JUnit 5 – Fabryki testów

Czasami samo przekazanie parametrów do testów nie wystarcza. Nie są to sytuacje częste, ale mogą się zdarzyć. Jednym z przykładów niech będzie konieczność pobrania danych testowych z jakiejś bazy danych. Nie posiadamy do dyspozycji żadnego narzędzia, w rodzaju @CsvFileSource. Można takie narzędzie napisać. Dodać rozszerzenie do modułu testów parametryzowanych i będzie OK. Ma ono jednak […]

JUnit 5 – Testy parametryzowane

Sama możliwość wielokrotnego uruchomienia testu, to nie wszystko. W pewnych przypadkach chcielibyśmy, by nasz test został uruchomiony dla różnych zestawów danych. Ma to sens, jeżeli nasze dane wejściowe reprezentują pewien spójny podzbiór przypadków testowych. Mówiąc inaczej mamy dane, które mają sprawdzić jedną ze ścieżek. Listing 1. Każdy test sprawdza jedną ze ścieżek – JUnit 4 […]

JUnit 5 – Testy powtarzalne

Jedną z cech testów jednostkowych jest ich powtarzalność. Najlepiej, jeżeli powtórzenie jest wykonywane automatycznie. Jednak nie o tym dziś będziemy mówić. Czasami pisząc testy, musimy uwzględnić, że nasz kod uruchamiany jest w środowisku wielowątkowym. Nie ma w tym nic nadzwyczajnego. Podobnie jest w przypadku, gdy tworzymy testy, których zadaniem jest jakiegoś kodu w wielu kopiach […]

JUnit 5 – Zagnieżdżanie testów

Samo nazywanie i tagowanie testów nie zawsze jest wystarczające. Szczególnie że oba te mechanizmy są stosunkowo proste. Pozwalają one na organizację testów w pewien logiczny sposób. Nazwy pozwalają na odszukiwanie testów w raportach, z wykorzystaniem przeszukiwania pełnotekstowego. Tagi pozwalają na oznaczanie testów o podobnym znaczeniu w ramach całej aplikacji. Pozwala to na filtrowanie i wybiórcze […]

JUnit 5 – nazywanie testów, tagi i filtrowanie

Jedną z najbardziej rozpoznawalnych cech BDDW jest opisowość testów. Oczywiście nie jest to najważniejsza cecha. Raczej jest to produkt uboczny metodyki. Jednak gdy piszemy testy, to taka opisowość jest bardzo przydatna. Zresztą widać, że narzędzia pozwalające na opisywanie testów w bardziej naturalny sposób zyskują popularność w ostatnich latach. Jedną z rzeczy, których brakuje w JUnit […]