2014-10-17 2 views
2

Я запускаю sbt-assembly, чтобы построить один файл jar, который можно развернуть в другом месте. Я хотел бы запустить мои тесты против этого файла jar, а не против локальных файлов .class. Работа с локальными .class-файлами по умолчанию - sbt test, но вместо этого я хочу проверить банку (но без включения файлов тестового класса в банку).Как я могу запускать тесты против jar, созданного sbt-assembly

+1

Посмотрите на: http://stackoverflow.com/questions/16389446/compile-tests-with-sbt-and-package-them-to- быть-вводного позже. –

+1

@TooTone Я не уверен, что Spark - ваш прецедент, но, возможно, вам может быть интересно: http://eugenezhulenev.com/blog/2014/10/18/run-tests-in-standalone-spark- cluster/Я подготовил пример запуска тестов в автономном Spark-кластере с собранным файлом jar –

+0

@EugeneZhulenev Я рассмотрю это, спасибо. Похоже, это может касаться и моего вопроса здесь. – TooTone

ответ

2

Для создания сборки баночки в тесте вам нужен конфигурационный

import AssemblyKeys._ 

Project.inConfig(Test)(baseAssemblySettings) 

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

Итак, теперь вы можете приготовить убер-банку с испытанием узла. Однако я не знаю, как легко запускать тесты с sbt с этой банкой. Я хотел бы пойти на пользовательские команды, что-то вроде теста: запустить пробную сборку, которая будет делать что-то вроде этого внутренне

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

SBT-сборки ходовых испытаний во время сборки фазы, но я уверен, что он делает это Agains еще не упакованные классы. СОУ вы, вероятно, хотите, чтобы исключить их из фазы сборки с

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

спасибо, но в том числе 'scalatest' в командной строке кажется ненужным (по-видимому, он автоматически включается при разработке зависимостей). И что более серьезно, когда я запускаю 'scala -classpath uber-jar-test.jar -classpath org.scalatest.tools.Runner -R target/scala-2.10/test-classes /', скалярный GUI всплывает и правильно находит мой 25 тестов, но с ошибкой «java.lang.NoClassDefFoundError» (поскольку сборка собрана, все классы должны быть там, верно?) – TooTone

+0

Downvoting, потому что это не отвечает на вопрос о выполнении тестов против сборщика; он отвечает, как построить сборку, включающую тесты. –