Впервые слышу о настройке. В общем, это сложно, так как все инструменты стараются максимально использовать JVM, чтобы сохранить его в тепле.
Вы можете сделать что-то вроде запуска:
sbt -no-colors --error "print test:definedTests"
, чтобы получить список тестовых наборов. , Если бы я запустил его для одного из моих проектов, я мог бы получить что-то вроде:
chimneyJVM / Test / definedTests
Vector(Test io.scalaland.chimney.PatcherSpec : subclass(true, utest.TestSuite), Test io.scalaland.chimney.PBTransformationSpec : subclass(true, utest.TestSuite), Test io.scalaland.chimney.DslSpec : subclass(true, utest.TestSuite), Test io.scalaland.chimney.DslFSpec : subclass(true, utest.TestSuite), Test io.scalaland.chimney.IssuesSpec : subclass(true, utest.TestSuite), Test io.scalaland.chimney.JavaBeansSpec : subclass(true, utest.TestSuite))
chimneyJS / Test / definedTests
Vector(Test io.scalaland.chimney.PatcherSpec : subclass(true, utest.TestSuite), Test io.scalaland.chimney.PBTransformationSpec : subclass(true, utest.TestSuite), Test io.scalaland.chimney.DslSpec : subclass(true, utest.TestSuite), Test io.scalaland.chimney.DslFSpec : subclass(true, utest.TestSuite), Test io.scalaland.chimney.IssuesSpec : subclass(true, utest.TestSuite), Test io.scalaland.chimney.JavaBeansSpec : subclass(true, utest.TestSuite))
chimneyCatsJVM / Test / definedTests
Vector(Test io.scalaland.chimney.cats.CatsValidatedSpec : subclass(true, utest.TestSuite))
chimneyCatsJS / Test / definedTests
Vector(Test io.scalaland.chimney.cats.CatsValidatedSpec : subclass(true, utest.TestSuite))
Test / definedTests
Vector()
Этот вывод может быть проанализирован чем-то вроде скрипта AWK или Python, чтобы получить список тестовых наборов, сгруппированных по проектам.
В качестве следующего шага, который вы могли бы выполнить для каждого набора проектов:
sbt $project/testOnly $suite
Это будет запускать каждый набор в отдельном процессе.
ОДНАКО, каждый из этих процессов будет использовать та же самая блокировка в файловой системе, чтобы убедиться, что какой-то другой процесс не будет извлекать коврик из-под него (разумно), но - даже если вы запускаете test:compile
прежде, чтобы избежать синхронизации при компиляции - это приведет к чему-то, как я могу только думать, что неэффективно, fr agile беспорядок. Каждый процесс будет выделять память заново (а при большом количестве комплектов это займет много памяти), инициализировать все, все они будут бороться за доступ к одним и тем же ресурсам, и всем им придется согревать JVM с нуля. Могу поспорить, что эта установка будет медленнее, чем последовательное выполнение комплектов в одной JVM, если у вас не было действительно странного варианта использования.