@Shalom Chodzi mi o to, że mamy kod wykorzystujący singleton, i chcemy przetestować tę metodę, w ten sposób nie da się zamockować tego singletona, spróbuję to przedstawić na przykładzie:
class Singleton {
void metoda() {...}
static Singleton getInstance() {...}
}
class KlasaKorzystającaZSingletona {
void fun() {
Singleton.getInstance().metoda();
}
}
Tutaj się nie da zamockować tego Singletona, chyba, że dodalibyśmy do klasy korzystającej z singletona setter (z widocznością package-private) przyjmujący obiekt singleton, i odwoływać się do niego w fun() za pomocą zapisanego pola (które na początku inicjować w konstruktorze przez Singleton.getInstance()) w taki sposób: void fun() { singleton.metoda(); }, wtedy w czasie testów od razu po stworzeniu obiektu tej klasy po prostu wstrzyknąć mu mocka i od tego momentu będzie z niego korzystać, ale tak czy inaczej będzie tworzona jedna instancja singletona w czasie testów, która może być ciężka.