Wpis z mikrobloga

@Cheessys: tak jak piszą przedmówcy, jeżeli wynik metod publicznych (tylko te powinieneś testować) jest zgodny z oczekiwaniem, to możesz założyć, że metoda prywatna działa. Natomiast jeżeli ta metoda ma jakąś większą logikę to przenieś tę metodę do nowej klasy i testuj osobno.
@SuppressWarnings: A załóżmy taki case: masz klasę obsługującą FTP-a, i do tego jedną z opcji to przesłanie po SSH-a, dajmy na to też jakaś osobna klasa, i jest metoda prywatna ustawiająca parametry połączenia, i chcesz przetestować tylko poprawność ustawienia parametrów. Wiem że to można by podciągnąć pod "Takiego setowania to nie testuj, jak dobrze trasferuje pliki po wywołaniu metody publicznej to jest ok", ale później przez brak takiego unit testu na
@Cheessys: stestuj metody publiczne korzystające z tejże, a jak dalej będziesz miał wątpliwości to na chwilę zmień na public, stestuj i usuń, nie widzę problemu. Ważne żeby przeszło testy swoich publicznych zależności
@SuppressWarnings: Można, ale akurat dla tego przypdaku napisaliśmy unit test dla metody prywatnej i ciężko by to nazwać antypatternem. Na 150 testów *IT, które mają po 15 test casów czasem, jak masz na cały scope kilka Unit Testów żeby pokryć np. metodę prywatną. Najwyżej zawsze refactoring można zrobić. Nie trzymałbym się tak mocno takiego clean codu, bo akurat w przypadku testów, lepiej mieć dobrze działające niż wzorcowo napisane
@SuppressWarnings: Ja miałem jeden, całkiem niedawno. Ze względu na specyfikę testowanej klasy nie miałem gwarancji powtarzalności wyników przy kolejnych wywołaniach testów na publicznym API (w sensie pod spodem w pętli asynchronicznie leciała sobie jedna metoda, na której logice mi zależało - po jednym przejściu - a nie było sensu wystawiać jej na zewnątrz). Wydłubałem ją w teście refleksją i dzięki temu zawsze wołana była tylko raz.