¿Por qué es difícil probar un sistema que depende de singletons?

He leído casos a favor y en contra del uso del patrón singleton. Un caso común en contra describe las dificultades en las pruebas unitarias con singletons, pero no estoy claro por qué es esto. Si la prueba unitaria es parte de la construcción, ¿no podría simplemente hacer referencia al singleton y usarlo cuando sea necesario? (Estoy pensando desde una perspectiva de Java, pero supongo que no debería importar)