访问测试代码中的测试类路径

时间:2017-08-23 20:41:06

标签: scala sbt

我需要测试分支JVM进程的代码,为此我需要访问test:fullClasspath或者让test依赖于package并使用带有胖jar的classpath。

后一个选项非常hacky,很慢,并且它不包含任何测试二进制文件。至于前一个解决方案,我无法弄清楚如何访问test:fullClasspath。无论我是在当前JVM中运行测试还是作为分叉流程,System.getProperty("java.class.path")总是给我/opt/sbt/bin/sbt-launch.jar

有什么建议吗?

1 个答案:

答案 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,正是您正在寻找的,对吗?