Część wspólna zbiorów z Guavą

Szybkie rozwiązanie problemu opisanego tutaj. Mamy dwa zbiory A i B, chcemy sprawdzić, czy wszystkie elementy ze zbioru A są obecne w zbiorze B. Najprościej jest to zrobić w następujący sposób: Listing 1. Wykorzystanie API public class SetsIntersectionExample { public static void main(String[] args) { // Smoki i gołe baby Fairy fairy = Fairy.create(); Set<String> […]

Z Javy 8 na Javę 9, czyli co wybuchnie

Małe rzeczy zawsze cieszą. Jedną z nich jest możliwość bezproblemowego migrowania z Javy 8 na Javę 9. Fajnie by było, gdyby taka migracja przeszła bez większych zgrzytów, dlatego warto czasami rzucić okiem, co wypluwa nam nasz kompilator. A wypluć może on na przykład: Listing 1. Co nam mówi kompilator Warning:(30, 53) java: ‚_’ used as […]

Kiedy wypakować Optional

Odpowiedź brzmi najlepiej nigdy. Pandora już raz rozpakowała Optionala i do dziś dzieci się o tym uczą w szkole. Zresztą można sobie, to opisać w następujący sposób. Tygrys w klatce Wyobraźmy sobie, że mamy do dyspozycji Tygrysa. Niech ma na imię Bonawentura. Listing 1. Nasz tygrys public class Tiger { private final String name; private […]

Sezon na przetwory zakończony, czyli wspomnienie po Confiturze 2017

Jak już wcześniej pisałem w tym roku na Confiturę pojechałem jako prelegent. Mam nadzieję, że moja prezentacja się spodobała. A teraz kilka słów o prezentacjach innych 🙂 Keep IT clean: mid-sized building blocks and hexagonal architecture in real life – Jakub Nabrdalik Świetna prezentacja poświęcona temu, jak wykorzystać widoczność pakietową do modularyzacji swojego kodu. Modyfikator […]

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 […]