2014-10-17 74 views
2

我正在運行sbt-assembly以構建一個可以部署到別處的單個jar文件。我想對這個jar文件運行我的測試,而不是針對本地的.class文件。對本地.class文件運行是缺省的sbt test,但我想測試jar而不是將測試類文件合併到jar中。如何運行sbt-assembly構建的罐子的測試

+1

排除他們在深入瞭解:http://stackoverflow.com/questions/16389446/compile-tests-with-sbt-and-package-them-to-待運行更高版本。 – 2014-10-17 14:02:21

+1

@TooTone我不確定Spark是否是您的使用案例,但它可能會讓您感興趣:http://eugenezhulenev.com/blog/2014/10/18/run-tests-in-standalone-spark-羣集/我準備在裝配jar文件的獨立Spark羣集中運行測試的例子 – 2014-10-19 01:45:53

+0

@EugeneZhulenev我會研究那個謝謝。這似乎也可能與我的問題有關。 – TooTone 2014-10-20 10:36:46

回答

2

要建立組裝罐子在測試你需要配置

import AssemblyKeys._ 

Project.inConfig(Test)(baseAssemblySettings) 

jarName in (Test, assembly) := s"${name.value}-test-${version.value}.jar" 

所以,現在你可以準備測試尤伯杯罐子:組裝。不過,我不知道用這個jar從sbt運行測試的簡單方法。我會去自定義命令,類似的測試:運行測試,裝配過程中裝配階段運行測試,會做這樣的事情在內部

scala -classpath uber-jar-test.jar classpath scalatest-<version>.jar org.scalatest.tools.Runner -p compiled_tests 

SBT組裝,但我敢肯定它做它agains尚未打包的課程。 SOU你可能想從組裝階段與

test in (Test, assembly) := {} 
+0

謝謝,但在命令行中包含'scalatest'似乎沒有必要(大概在處理依賴關係時會自動包含它)。更嚴重的是,當我運行'scala -classpath uber-jar-test.jar -classpath org.scalatest.tools.Runner -R target/scala-2.10/test-classes /'時,scalatest GUI彈出並正確找到我的25測試,但失敗與'java.lang.NoClassDefFoundError'(因爲該jar被組裝,那麼所有的類應該在那裏,對吧?) – TooTone 2014-10-17 16:53:20

+0

Downvoting,因爲這不會回答對組裝jar運行測試的問題;它回答瞭如何構建包含測試的組裝jar。 – 2017-03-30 02:22:10