Не используйте синглтон.
В частности, единственное различие между синглтоном и глобальной переменной заключается в том, что синглтон пытается принудительно применить один экземпляр (например, делая конструктор закрытым).
Вместо этого сделайте конструктор общедоступным и напишите тесты, используя новые экземпляры. В вашей реальной программе используйте getInstance()
для получения канонического глобального экземпляра (или используйте контейнер IOC).
И помните, что синглтоны - это патологические лжецы .
Если вам все еще не нравится идея Singleton, вместо того, чтобы делать конструктор общедоступным, вы можете добавить публичный (и статический) фабричный метод для создания экземпляров способом, который не может быть использован случайно, например :
public static MyClass TEST_CreateInstance() {
return new MyClass();
}