我有一些测试用例需要查看类路径以提取那里的某些文件/目录的路径。这在IDE中工作正常。
问题是,在运行SBT测试时,Properties.javaClassPath
会给我/usr/share/sbt-launcher-packaging/bin/sbt-launch.jar
。
当我运行show test:dependency-classpath
时,类路径很好。有没有办法从运行的Scala / Java程序中获取该信息?或者有没有办法将它扔进系统属性或环境变量?
答案 0 :(得分:2)
默认情况下,测试是在SBT进程内部运行的,所以类路径看起来就像你启动sbt时那样(我想sbt做了一些trixery动态加载测试的类,不确定)。做你想做的事情的一种方法是在分叉的jvm中运行你的测试,这样sbt将启动一个新的jvm来运行测试套件,并且应该有预期的类路径:
fork in Test := true
答案 1 :(得分:0)
我一直在努力了解EmbeddedCassandra如何在spark-cassandra-connector项目中工作,该项目使用类路径来启动和控制Cassandra实例。以下是从其配置中获取正确类路径的行。
(compile in IntegrationTest) <<= (compile in Test, compile in IntegrationTest) map { (_, c) => c }
可在此处找到整个来源:https://github.com/datastax/spark-cassandra-connector/blob/master/project/Settings.scala
有关<<=
运营商的信息,请访问:http://www.scala-sbt.org/0.12.2/docs/Getting-Started/More-About-Settings.html#computing-a-value-based-on-other-keys-values。我知道这不是当前版本的sbt,但定义仍然有效。