2017-08-23 5 views
0

私はJVMプロセスをフォークするコードをテストする必要があります。そのためには、test:fullClasspathにアクセスするか、packageに依存し、fatjarでクラスパスを使用する必要があります。テストコードのアクセステストクラスパス

後のオプションは非常にハッキリですが、遅く、テストバイナリは含まれていません。前者の解決法に関しては、私はtest:fullClasspathにアクセスする方法を理解できません。現在のJVMでテストを実行する場合でも、分岐したプロセスでテストする場合でも、System.getProperty("java.class.path")は常に私に/opt/sbt/bin/sbt-launch.jarを与えます。

提案がありますか?

+0

SBT( 'sbt run')などからコードを実行していますか? – Haspemulator

答えて

1

SBTから実行すると、実行中にアプリケーションをforkするようSBTに指示するとすぐに動作します。ここで私が持っているものです。

プロジェクト:build.sbt

<project root> 
    - build.sbt 
    - src 
    - test 
     - scala 
     - test.scala 

test.scala

fork := true 

:次に

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の最初の部分思える、右、あなたが探しているものでしょうか?

+0

あなたは正しいです、それは私のせいでした。フォークのグローバル設定は、プロジェクトレベルでforkをfalseに設定したプラグインによってオーバーライドされました: - / – lisak

関連する問題