2009-07-07 4 views
16

Моя компания начинает писать код с помощью Scala. Меня перевели в этот проект, и я большой поклонник TDD, поэтому я хотел бы получить модульную систему тестирования. Однако система сборки, которую мы используем для этого проекта, - Maven, и это не изменится по целому ряду причин.Есть ли инструмент тестирования Scala, который хорошо интегрируется с Maven?

Я просмотрел как ScalaTest, так и ScalaCheck, и у обоих, похоже, есть проблемы с интеграцией Maven. Различные сообщения на форуме, которые я видел в поисках Google, показывают, что некоторые из сьютов, включенных в ScalaTest, не будут запускаться под плагином maven-scala, и я не смог найти никакой информации о запуске ScalaCheck в тесте Maven Цель.

Может ли кто-нибудь указать мне на то, чтобы заставить ScalaTest/ScalaCheck надежно работать с Maven или предложить альтернативу?

ответ

10

Вы также можете использовать specs, чтобы объявить спецификации и выполнить их как тесты JUnit с Maven. Это прекрасно работает, как описано здесь: http://code.google.com/p/specs/wiki/RunningSpecs#Run_your_specification_with_JUnit4

Если у вас есть какие-либо проблемы с этим, разместите сообщение в списке рассылки пользователей.

Thanks,

Eric.

PS: вы также можете использовать ScalaTest и ScalaCheck из спецификаций, если хотите получить доступ к некоторым из этих функций библиотек.

+0

Мне нравится спецификации, и было легко работать внутри Eclipse, в JUnit тестов. –

3

Ответ на мой вопрос: Похоже, что пакет JUnit4Runner located here обеспечивает необходимый клей для интеграции полной функциональности ScalaTest с Maven. Кроме того, по слухам, следующая версия ScalaTest будет включать что-то вроде этого.

14

ScalaTest 1,0 имеет:

org.scalatest.junit.JUnitRunner

Вы можете использовать его с RunWith аннотаций JUnit в. Мейвену нравится это. Также есть модуль Maven для ScalaTest, написанный Jon-Anders Teigen. Сейчас вам нужно захватить его со страницы GitHub Jon-Anders:

http://github.com/teigen/maven-scalatest-plugin

В ближайшее время мы планируем развернуть его «официально» в репозитории Maven.

Плагин официально развернут в Maven Central.

14

Я понимаю, что это был дан ответ, но наиболее полный ответ, который я нашел для использования Scalatest с Maven, в частности, с помощью командной строки mvn test, является http://jpz-log.info/archives/2009/09/29/scalatest-in-maven/

добавить эту информацию здесь, потому что, когда прибегая к помощи установок Scalatest и Maven этого вопросы пришли довольно высоко по результатам, но не дали удовлетворительного (для моего случая) ответа.

В основном:

  • добавить к вашему Scala ПОМ, как обычно, а также scalatest (версия> 1.0) и JUnit
  • добавить @RunWith(classOf[JUnitRunner]) как класс аннотаций на ваши спецификации
  • Телль Maven-безошибочный-плагин, чтобы включить **/*Spec.class

В файлах Spec.scala:

import org.scalatest.junit.JUnitRunner 
import org.junit.runner.RunWith 
import org.scalatest.Spec 
import org.scalatest.matchers.ShouldMatchers 

@RunWith(classOf[JUnitRunner]) 
class AutomatonSpec extends Spec with ShouldMatchers { 
    (...) 
} 

В вашей pom.xml:

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <configuration> 
     <includes> 
      <include>**/*Spec.class</include> 
     </includes> 
     </configuration> 
    </plugin> 
    </plugins> 
</build> 
+6

Просто комментарий, с Maven 3.0, описание плагина должно быть в разделе '', а не ''. – gpampara

+2

' **/* Spec.class' был для меня отличным помощником. Благодаря! –

+0

обновил этот ответ в соответствии с комментарием @gpampara, что я был более чем рад узнать ... :) – jopasserat

1

Есть несколько полезных единиц теста для тестирования f или Scala: ScalaCheck ScalaCheck - это реализация библиотеки QuickCheck для Haskell в Scala. Он пытается максимально упростить внешний вид QuickCheck, будучи открытым для улучшений и расширений, которые могут облегчить задачу рандомизированного тестирования программ Scala на основе свойств. Команда: Рикард Нильссон. Требуется: Scala 2.6.0 или новее. Документация: руководство пользователя.

репетиция репетиция является основой для тестирования Scala, задуман как более простой в использовании для замены SUnit в стандартной библиотеке. Команда: Рафаэль Кон.

ScalaTest ScalaTest - это бесплатный инструмент тестирования с открытым исходным кодом для программистов Scala и Java. Он написан на Scala и позволяет вам писать тесты в Scala для тестирования кода Scala или Java. Он выпущен под лицензией Apache 2.0 с открытым исходным кодом. Команда: Bill Venners.

Scala функция функции является основой Behavior-Driven-Design, которая обеспечивает: простой и типизированный язык для создания спецификаций; помощники для указания свойств кода; интеграция с JUnit, Scalacheck и jMock2; шаблон-подобный соединитель; возможности структурирования и составления спецификаций, а также повторное использование примеров по спецификациям; таблицы данных для группировки сразу нескольких примеров данных. Команда: Эрик Торребор, Дэвид Бернард, Хорхе Ортис.

От: http://www.scala-lang.org/node/1209#program_testing

Смежные вопросы