Uspokój się, to są jednostkowe przypadki. 2, 3 metody w całym systemie.
W Twoim świecie tylko niespokojni piszą prawdę?
Tu chodzi o coś innego. Normalnie dane mają być losowe. Ale do testów muszę mieć konkretne. No można to zrobić inaczej faktycznie. Ale z drugiej strony tworzyć osobne klasy, które służą tylko do tego, żeby dać losowego albo konkretnego integera?
Tak tak się pisze testy jednostkowe na całym świecie.
W tym konkretnym przypadku: klasa dostaje w zależnościach interfejs, który ma metodę zwracającą inta. W produkcyjnym kodzie używana jest klasa zwracająca losową liczbę. W testach używany jest mock, który zwraca konkretną wartość.
Poniekąd się zgadzam (że testujemy tylko metody publiczne). Ale jeśli metoda prywatna zawiera fragment kodu, który jest dość istotny, to nie za bardzo widzę inną możliwość (poza opisanym wyżej internal albo refleksją).
Jak napisałem - taka metoda nie powinna być prywatna, tylko powinna być publiczną metodą swojej własnej klasy.
Czasami osobne testy metod publicznych z partial mockami metod prywatnych + osobne testy metod prywatnych bardzo, ale to bardzo upraszczają testy.
Najprostsze testy są wtedy, gdy wszystkie metody i pola są publiczne. Tylko nie o to chyba chodzi w programowaniu.
Zamiast przygotowywać pełen zestaw danych robisz jego węższe zbiory. Takie testy są łatwiejsze do utrzymania, bo jeśli zmienisz małą metodę, to poprawiasz tylko krótki, a zatem czytelny test do niej.
I w czym to jest lepsze od SRP?