在build.sbt中为分叉测试设置JVM选项

cod*_*dle 5 scala sbt

我有两组测试,一组需要与JVM -javaagent集一起运行,而另一组则需要未设置它。我Groups习惯在单独的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
Run Code Online (Sandbox Code Playgroud)

sbt 1.2.8 scala 2.12.8

Mar*_*lic 3

尝试像这样testGrouping通过配置来确定范围Test

\n\n
Test / testGrouping := groupByJavaAgent((definedTests in Test).value)\n
Run Code Online (Sandbox Code Playgroud)\n\n

在我的机器上给出

\n\n
\xe2\x9e\x9c  ~ jps -lvm\n54513 sbt.ForkMain 52222 -javaagent:/Users/mario_galic/.ivy2/cache/com.github.jbellis/jamm/jars/jamm-0.3.3.jar\n54514 sun.tools.jps.Jps -lvm -Dapplication.home=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home -Xms8m\n54331 /usr/local/Cellar/sbt/1.2.8/libexec/bin/sbt-launch.jar -Xms1024m -Xmx1024m -XX:ReservedCodeCacheSize=128m -XX:MaxMetaspaceSize=256m\n
Run Code Online (Sandbox Code Playgroud)\n