The Effective Java имеет следующее утверждение о модульном тестировании синглтонов
Создание класса в виде синглтона может затруднить тестирование его клиентов, поскольку невозможно заменить имитационную реализацию на синглтон, если он не реализует интерфейс, который служит его типом.
Может ли кто-нибудь объяснить, почему это так?