【问题标题】:Set JVM option for forked tests in build.sbt在 build.sbt 中为分叉测试设置 JVM 选项
【发布时间】:2019-04-15 04:25:50
【问题描述】:

我有两组测试,一组需要在设置了 JVM -javaagent 的情况下运行,另一组需要取消设置。我正在使用Groups 在单独的 JVM 上运行,我可以看到两个 java 进程都启动了。使用jps -lvm,我可以看到没有使用-javaagent 标志运行的JVM。

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.8scala 2.12.8

【问题讨论】:

    标签: scala sbt


    【解决方案1】:

    尝试像这样通过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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-28
      • 2016-03-26
      • 1970-01-01
      • 1970-01-01
      • 2014-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多