Witam,
Od jakiegoś czasu testuje jednostkowo. Mój zestaw technologiczny to JUnit i Mockito. Często w testowaniu przeszkadzają mi metody statyczne (np. gdy chcę zmockować coś z FacesContext, w celu zbadania interakacji, gdy wystąpią pewne specyficzne warunki, a metoda musi posiadać jakąś logikę). Często wywołuje to np. NullPointerException.
Rozwiązuje to najczęściej przez tworzenie toolkitów (wstrzykiwanych przez Dependency Injection), które wrappują statyczne metody (np. warunkowy redirect lub wysłanie komunikatu o błędzie). Dzięki temu mogę wytestować moją logikę (np. warunkową interakcję w zależności od warunków), przez zmockowanie kontekstu (i test na prawdziwym obiekcie, który używa mocka wstrzykniętego obiektu wrappującego statyczny kontekst).
Czy tworzenie toolkitów wrappujących metody statyczne, wstrzykiwanych przez IoC to coś złego? Moim zdaniem używanie PowerMock to przekombinowywanie skoro można sobie stworzyć łatwo testowalny toolkit przez zamknięcie staticów w Dependency Injection (chodzi tu raczej o verify, czyli warunkową interakcję, bo nie ma sensu testować kontekstu jednostkowo, co najwyżej bardzo rzadko, integracyjnie).
Jakie jest Wasze zdanie na ten temat?