chciałem odpowiedzieć jakoś rzetelniej, ale tutaj podstawowy problem to stosowanie czegoś, czego nie rozumiesz...
Przede wszystkim decydujesz się na adnotacje @Rule, wykorzystując JUnit5 runner'a do tego, żeby przygotować "cechy wspólne" dla wszystkich swoich testów, a następnie korzystasz z @Before
W ogóle zaglądałeś do intefejsów adnotacji? Czytałeś dokumnetacje rule vs before?
by użyć @Rule, potrzebujesz klasy, która implementuje TestRule(preferowane) lub MethodRule, jak można przeczytać tutaj . Podczas gdy potem stosujesz @Before które wymaga napisania nowej metody w każdym przypadku testowym,
@Rule nie, ponieważ jest to tylko instancja już istniejącego kodu.
Dodatkowo określiłeś, że mokujesz - nie to nie jest mokowanie.
Dlaczego mówię o zrozumieniu z czego się korzysta, bo @Rule ;] ma rózne klasy, tez sam je mozesz definiować, to teraz moje pytanie jest takie, z jakiego runnera korzysta "TemporyFolder" klasa? może BEFORE ALL? Albo AFTER EACH? etc... sprawdź dokładnie cykl wywołania.
Dalej jeszcze co najlepsze, korzystasz z obiektu w before wykorzystujac metody " temoportFolder".
Najważniejsze teraz twoje stwierdzenie na początku
(nie chcę modyfikować metod).
ale to nie ma znaczenia, co się znajduje w testowanej metodzie. Najpierw przestudiuj czym jest TESTOWANIE, testujesz zachowania funkcji, a nie ich konkretne implementacje to co mają w środku, testując "gówno" obchodzi Cię jaki algorytm, co i jak jest tam wykonywane.
Masz na starcie zdefiniowane " to co ma być przetestowane" -> i jaki ma to dac rezultat.
To jest idea testów integracyjno-jednostkowych when -> zdarzenie, then -> reakcja. Oczekujemy odpowiedniej reakcji na odp. zestaw testowy ( zdarzenie ) .
Chętnie pomogę jak zaznajomisz się już z podstawami tego co używasz, pewnie wtedy nie będzie nawet pomocy na forum potrzebował, bo sam sprawnie dojdziesz do rozwiązania, czemu twój kod nie działa. Jak nie, to pisz priw, lub pytaj dalej ;]