Я могу дать ответ только на часть вашего вопроса «есть ли для меня другие варианты» ...
Использование такой сложной настройки для юнит-тестов (получение изображений докера и т. Д.)вызывает у меня подозрение:
Это может означать, что ваши тесты на самом деле являются интеграционными, а не юнит-тестами.Это может быть прекрасно, если ваша цель - найти ошибки во взаимодействиях между вовлеченными компонентами или во взаимодействии между вашим кодом и его системной средой.(Тот факт, что в вашей настройке используются образы Docker, создается впечатление, что вы намереваетесь протестировать тестируемую систему на соответствие системной среде.) Если это так, я желаю вам удачи, чтобы ответить на другие аспекты вашего вопроса (распараллеливаниетесты, синглтоны и безопасность потоков).Возможно, имеет смысл пометить ваш вопрос как «интеграционное тестирование», а не «юнит-тестирование», чтобы привлечь соответствующих экспертов.
С другой стороны, ваши сложные настройки могут указывать на то, что ваш модуль-тесты еще не спроектированы должным образом и / или тестируемая система еще не спроектирована так, чтобы ее можно было легко тестировать с помощью модульных тестов: модульные тесты сосредоточены на тестируемой системе изолированно - изоляция от зависимых компонентов, нотакже изоляция от специфики системной среды.Для таких тестов должным образом изолированной тестируемой системы сложная настройка с использованием Docker не понадобится.
Если последнее верно, вы могли бы получить пользу от ознакомления с такими темами, как «насмешка», «внедрение зависимостей»"или" инверсия управления ", которая поможет вам спроектировать тестируемую систему и ваши тестовые примеры так, чтобы они не зависели от системной среды.Тогда ваши сложные настройки больше не будут нужны, и другие аспекты вашего вопроса (синглтон, распараллеливание и т. Д.) Могут больше не иметь значения.