Как совместить непрерывное тестирование sbt с eclipse scala ide?

Я редактирую в Eclipse Scala IDE, и мои тесты выполняются на отдельном экране с использованием ~ test в sbt. Мои тесты написаны с использованием specs2.

Это дает мне двойную компиляцию, и иногда Eclipse все еще собирается, пока sbt начинает срабатывать.

Чтобы решить эту проблему, я отключил автоматическую сборку, но это также удаляет хорошие предупреждения компилятора и ошибки в Eclipse.

Есть ли способ иметь оба без двойного времени компиляции?

Редактировать

Я предполагаю, что лучший способ (или, может быть, единственный способ) - это sbt запускать тесты без их компиляции. Я попробовал команду test:run, но это дает мне следующую ошибку:

java.lang.RuntimeException: No main class detected.
    at scala.sys.package$.error(package.scala:27)
    at sbt.Defaults$$anonfun$runTask$1$$anonfun$apply$27$$anonfun$13.apply(Defaults.scala:519)
    at sbt.Defaults$$anonfun$runTask$1$$anonfun$apply$27$$anonfun$13.apply(Defaults.scala:519)
    at scala.Option.getOrElse(Option.scala:108)
    at sbt.Defaults$$anonfun$runTask$1$$anonfun$apply$27.apply(Defaults.scala:519)
    at sbt.Defaults$$anonfun$runTask$1$$anonfun$apply$27.apply(Defaults.scala:518)
    at sbt.Scoped$$anonfun$hf5$1.apply(Structure.scala:581)
    at sbt.Scoped$$anonfun$hf5$1.apply(Structure.scala:581)
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:49)
    at sbt.Scoped$Reduced$$anonfun$combine$1$$anonfun$apply$12.apply(Structure.scala:311)
    at sbt.Scoped$Reduced$$anonfun$combine$1$$anonfun$apply$12.apply(Structure.scala:311)
    at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:41)
    at sbt.std.Transform$$anon$5.work(System.scala:71)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:232)

Как я могу использовать ~ test:run, пока Eclipse компилирует файлы?


person EECOLOR    schedule 25.03.2013    source источник


Ответы (2)


Отсутствие двойной компиляции и наличие всех предупреждений в Eclipse невозможно со стороны Eclipse.

Но вы можете настроить Eclipse так, чтобы он не наступал на пятки sbt. Для компиляции не обязательно использовать одну и ту же выходную папку.

В проекте Properties > Java Build Path > Source выберите Output folder исходной папки теста и измените местоположение на что-то вроде target/eclipse/test-classes.

введите здесь описание изображения

Таким образом, Scala IDE не будет касаться файлов классов, созданных sbt.

Возможно, вам придется сделать то же самое для основной исходной папки.

person skyluc    schedule 26.03.2013
comment
Отличный совет. Проблема в том, что я довольно часто генерирую свой проект Eclipse из sbt, сбрасывая эти настройки. Думаю, мне придется найти способ просто запускать тесты, не компилируя их из sbt. - person EECOLOR; 27.03.2013

В текущих версиях sbteclipse можно использовать следующие настройки:

EclipseKeys.eclipseOutput := Some(".target")

Документацию можно найти здесь: Использование sbteclipse

person EECOLOR    schedule 16.10.2014