Scala 在测试代码中访问测试类路径

Scala 在测试代码中访问测试类路径,scala,sbt,Scala,Sbt,我需要测试生成JVM进程的代码,为此,我需要访问test:fullClasspath,或者让test依赖于包,并使用带有胖jar的类路径 后一个选项非常粗糙、缓慢,并且不包含任何测试二进制文件。对于前一种解决方案,我不知道如何访问test:fullClasspath。无论我是在当前JVM中运行测试,还是作为一个分叉进程运行测试,System.getPropertyjava.class.path始终为我提供/opt/sbt/bin/sbt-launch.jar 有什么建议吗?如果您是从SBT运行的

我需要测试生成JVM进程的代码,为此,我需要访问test:fullClasspath,或者让test依赖于包,并使用带有胖jar的类路径

后一个选项非常粗糙、缓慢,并且不包含任何测试二进制文件。对于前一种解决方案,我不知道如何访问test:fullClasspath。无论我是在当前JVM中运行测试,还是作为一个分叉进程运行测试,System.getPropertyjava.class.path始终为我提供/opt/sbt/bin/sbt-launch.jar


有什么建议吗?

如果您是从SBT运行的,那么只要您指示SBT在运行时为您的应用程序分叉,这似乎就会起作用。以下是我所拥有的:

项目:

<project root>
  - build.sbt
  - src
    - test
      - scala
        - test.scala
在test.scala中:

然后从我运行:

它会打印:

/Users/username/projects/tmp/scala/target/scala-2.11/test-classes:/Users/username/projects/tmp/scala/target/scala-2.11/classes:/Users/username/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.11.11.jar

类路径的第一部分,即/Users/username/projects/tmp/scala/target/scala-2.11/test-classes,似乎就是您要寻找的,对吗?

您是从SBT SBT run运行代码还是以其他方式运行代码?是的,这是我的错。My fork全局设置被在项目级别将fork设置为false的插件覆盖:-/
object Test extends App {
  println(System.getProperty("java.class.path"))
}
sbt test:run
/Users/username/projects/tmp/scala/target/scala-2.11/test-classes:/Users/username/projects/tmp/scala/target/scala-2.11/classes:/Users/username/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.11.11.jar