Есть ли инструмент Scala unit test, который хорошо интегрируется с Maven?
Моя компания начинает писать код с помощью Scala. Меня перевели в этот проект, и я большой поклонник TDD, поэтому я хотел бы получить модульную систему тестирования. Однако система сборки, которую мы используем для этого проекта, - это Maven, и это не изменится по целому ряду причин.
Я просмотрел как ScalaTest, так и ScalaCheck, и у обоих, похоже, есть проблемы с интеграцией Maven. Различные сообщения на форуме, которые я видел в результатах поиска Google, показывают, что некоторые из сьютов, включенных в ScalaTest, не будут запускаться под maven- scala -plugin, и я вообще не смог найти какую-либо информацию о запуске ScalaCheck в Цель теста Maven.
Может ли кто-нибудь указать мне на то, чтобы заставить ScalaTest/ScalaCheck надежно работать с Maven или предложить альтернативу?
Ответы
Ответ 1
Вы также можете использовать specs, чтобы объявить спецификации и выполнить их как тесты JUnit с Maven. Это прекрасно работает, как описано здесь: http://code.google.com/p/specs/wiki/RunningSpecs#Run_your_specification_with_JUnit4
Если у вас есть какие-либо проблемы с этим, отправьте почту в списке рассылки пользователей.
Спасибо,
Эрик.
PS: вы также можете использовать ScalaTest и ScalaCheck из спецификаций, если вы хотите получить доступ к некоторым из этих функций библиотек.
Ответ 2
ScalaTest 1.0 имеет:
org.scalatest.junit.JUnitRunner
Вы можете использовать его с аннотацией JUnit RunWith. Мейвену нравится это. Там также плагин Maven теперь для ScalaTest, написанный Jon-Anders Teigen. Прямо сейчас вам нужно взять его с страницы Jonath Anders github:
http://github.com/teigen/maven-scalatest-plugin
Вскоре мы планируем развернуть его "официально" в репозитории Maven.
Плагин официально развернут в Maven Central.
Ответ 3
Я понимаю, что это ответ, но самый полный ответ, который я нашел для использования Scalatest с Maven, особенно через командную строку mvn test
, http://jpz-log.info/archives/2009/09/29/scalatest-in-maven/
Я добавляю эту информацию здесь, потому что, когда поисковые запросы для настроек Scalatest и Maven задают этот вопрос, он очень хорошо оценивает результаты, но не дает удовлетворительного (для моего случая) ответа.
В принципе:
- добавьте scala к вашему pom, как обычно, а также скалят (версия > 1.0) и junit
- добавить
@RunWith(classOf[JUnitRunner])
как аннотацию класса по вашим спецификациям
- сообщите maven-surefire-plugin, чтобы включить
**/*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>
Ответ 4
Чтобы ответить на мой собственный вопрос: похоже, что пакет Junit4Runner расположенный здесь, обеспечивает необходимый клей для интеграции полной функциональности ScalaTest с Maven. Кроме того, по слухам, следующая версия ScalaTest будет включать в себя что-то вроде этого.
Ответ 5
Для Scala есть полезный unit test костюм:
ScalaCheck
ScalaCheck - это реализация библиотеки QuickCheck для Haskell Scala. Он пытается максимально упростить внешний вид QuickCheck, будучи открытым для улучшений и расширений, которые могут облегчить задачу рандомизированного тестирования программ Scala на основе свойств.
Команда: Рикард Нильссон. Требуется: Scala 2.6.0 или новее. Документация: руководство пользователя.
репетиции
Rehersal - это тестовая среда для Scala, предназначенная как простая в использовании замена SUnit в стандартной библиотеке.
Команда: Рафаэль Кон.
ScalaTest
ScalaTest - бесплатный инструмент тестирования с открытым исходным кодом для Scala и Java-программистов. Он написан в Scala и позволяет вам писать тесты в Scala для тестирования либо Scala, либо Java-кода. Он выпущен под лицензией Apache 2.0 с открытым исходным кодом.
Команда: Билл Веннерс.
Scala Характеристики
Спецификации - это структура, управляемая поведением, которая обеспечивает: простой и типизированный язык для создания спецификаций; помощники для указания свойств кода; интеграция с JUnit, Scalacheck и jMock2; шаблон-подобный соединитель; возможности структурирования и составления спецификаций, а также повторное использование примеров по спецификациям; таблицы данных для группировки сразу нескольких примеров данных.
Команда: Эрик Торребор, Дэвид Бернард, Хорхе Ортис.
От: http://www.scala-lang.org/node/1209#program_testing