No utilice un singleton.
Específicamente, la única diferencia entre un singleton y una variable global es que el singleton intenta imponer una sola instancia (haciendo el constructor privado, por ejemplo).
En su lugar, haga que el constructor sea público y escriba pruebas utilizando instancias nuevas. En su programa actual, use getInstance()
para obtener la instancia global canónica (o use un contenedor IOC).
Y recuerde que singletons are pathological liars.
Si todavía está demasiado cómodo con la idea de un Singleton, en lugar de hacer que el constructor sea público, puede agregar un método de fábrica público (y estático) para crear instancias que no puedan utilizarse por accidente. por ejemplo:
public static MyClass TEST_CreateInstance() {
return new MyClass();
}
-1, IMO esto está empeorando la situación – orip
+1 para dar una solución real. No tengo control sobre el código de terceros, que es un singleton, y necesito soluciones, no se me aconseja cómo hacerlo. – eis