Scala 在build.sbt中为分叉测试设置JVM选项
我有两组测试,一组需要使用JVMScala 在build.sbt中为分叉测试设置JVM选项,scala,sbt,Scala,Sbt,我有两组测试,一组需要使用JVM-javaagent集运行,另一组需要取消设置。我使用组在单独的JVM上运行,我可以看到两个java进程都启动了。使用jps-lvm我可以看到没有JVM使用-javaagent标志运行 build.sbt: lazy val myProject = (project in file(".")) .settings( resolvers ++= Build.resolvers, libraryDependencies ++=
-javaagent
集运行,另一组需要取消设置。我使用组
在单独的JVM上运行,我可以看到两个java进程都启动了。使用jps-lvm
我可以看到没有JVM使用-javaagent
标志运行
build.sbt
:
lazy val myProject = (project in file("."))
.settings(
resolvers ++= Build.resolvers,
libraryDependencies ++= Build.dependencies,
fork in Test := true,
testGrouping := groupByJavaAgent((definedTests in Test).value),
tags in test += Tags.ForkedTestGroup -> 4
)
val home = System.getProperty("user.home")
val jammForkOpts = ForkOptions()
.withRunJVMOptions(Vector(s"-javaagent:$home/.ivy2/cache/com.github.jbellis/jamm/jars/jamm-0.3.3.jar"))
def groupByJavaAgent(allTests: Seq[TestDefinition]) = allTests
.groupBy(t => if(t.name.contains("no javaagent")) ("NoJamm", ForkOptions())
else ("Jamm", jammForkOpts))
.map { case ((gName, opts), tests) => Group(gName, tests, SubProcess(opts)) }
.toSeq
sbt 1.2.8
scala 2.12.8
尝试通过Test
这样的配置对testGrouping
进行范围界定
Test / testGrouping := groupByJavaAgent((definedTests in Test).value)
在我的机器上
➜ ~ jps -lvm
54513 sbt.ForkMain 52222 -javaagent:/Users/mario_galic/.ivy2/cache/com.github.jbellis/jamm/jars/jamm-0.3.3.jar
54514 sun.tools.jps.Jps -lvm -Dapplication.home=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home -Xms8m
54331 /usr/local/Cellar/sbt/1.2.8/libexec/bin/sbt-launch.jar -Xms1024m -Xmx1024m -XX:ReservedCodeCacheSize=128m -XX:MaxMetaspaceSize=256m