我需要测试分支JVM进程的代码,为此我需要访问test:fullClasspath
或者让test依赖于package
并使用带有胖jar的classpath。
后一个选项非常hacky,很慢,并且它不包含任何测试二进制文件。至于前一个解决方案,我无法弄清楚如何访问test:fullClasspath
。无论我是在当前JVM中运行测试还是作为分叉流程,System.getProperty("java.class.path")
总是给我/opt/sbt/bin/sbt-launch.jar
。
有什么建议吗?
答案 0 :(得分:1)
如果您从SBT运行,那么在您指示SBT在运行时分叉您的应用程序时,这似乎就会起作用。这就是我所拥有的:
项目:
<project root>
- build.sbt
- src
- test
- scala
- test.scala
在build.sbt
:
fork := true
test.scala
中的:
object Test extends App {
println(System.getProperty("java.class.path"))
}
然后从<project root>
我跑:
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
似乎该类路径的第一部分,即/Users/username/projects/tmp/scala/target/scala-2.11/test-classes
,正是您正在寻找的,对吗?