В ServiceLoader для Java эти записи должны присутствовать в файле JAR.Есть ли способ программно добавить эти записи службы во время выполнения для модульного тестирования, когда внутри IDE?Особенно, когда банки не построены.
Не зацикливайтесь на файлах JAR.Они являются предпочтительным способом инкапсуляции сервисов, но они не обязательны.Ключ действительно ClassLoader.getResources(String) - где String arg фактически становится ("META-INF/services/" + serviceClass.getName()).Еще один важный момент, о котором следует помнить: ServiceLoader.load(Class) использует загрузчик классов контекста (конечно, вы также можете использовать ServiceLoader.load(Class, ClassLoader)).Итак, что вам действительно нужно сделать, это манипулировать classpath или настроить загрузчик классов контекста таким образом, чтобы сделать ServiceLoader счастливым.
ClassLoader.getResources(String)
String
("META-INF/services/" + serviceClass.getName())
ServiceLoader.load(Class)
ServiceLoader.load(Class, ClassLoader)
ServiceLoader