Я изучаю Scala и хотел бы настроить интегрированное поблочное тестирование в Eclipse. Насколько я могу сказать от поиска с помощью Google, ScalaTest является способом пойти, возможно в сочетании с JUnit.
Каков Ваш опыт с поблочным тестированием Scala в Eclipse? Я должен использовать бегуна JUnit или что-то еще?
Мне не удалось запустить спецификацию ScalaTest с помощью JUnit runner в eclipse. Я думаю, это связано с отсутствием аннотированных методов @Test
. Однако если в вашем проекте есть поддержка Maven, вы можете запускать ваши спецификации из командной строки с помощью mvn test
. Чтобы плагин Surefire обнаружил ваши спецификации, используйте следующую конфигурацию в вашем pom-файле.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.5</version>
<configuration>
<includes>
<include>**/*Spec.class</include>
</includes>
</configuration>
</plugin>
Посмотрите эти примеры для справки.
Я также не смог запустить модульные тесты из Eclipse (по общему признанию, я не слишком старался), но если вы хотите взглянуть на IntelliJ, ScalaTest работает в среде IDE без проблем.
Я провел последние несколько дней, пытаясь найти комбинацию юнит-тестов, которые работают со Scala для моего проекта, и вот что я нашел.
Я использую кандидатов в релизы для Scala 2.8, потому что в ней исправлен ряд ошибок, которые мешали мне в 2.7.2. Сначала я пытался заставить Scalatest работать с 2.8, но не смог найти стабильного решения, в будущем это может быть лучшим способом, но в настоящее время вокруг релиза 2.8 слишком много неясного.
Конфигурация, которая у меня работает, заключается в использовании аннотаций JUnit4 в коде тестов на scala, как показано ниже:
import org.junit._ import Assert._ class TestSuite{ @Test def testSimple(){ asserEquals("Equal",1,1) } }
Затем я использую набор тестов java JUnit для запуска всех моих тестов вместе, как показано ниже:
import junit.framework.Test; import junit.framework.TestSuite; import org.junit.runner.RunWith; import org.junit.runners.Suite; @RunWith(Suite.class) @Suite.SuiteClasses( { TestSuite.class }) public class AllTests { public static Test suite() { TestSuite suite = new TestSuite("Test Suite"); return suite; } }
Единственный дополнительный трюк - добавить выходной каталог в качестве исходного каталога в Eclipse, чтобы программа JUnit могла найти ваши файлы классов. Это небольшой хак, но он, кажется, работает.
Project->Properties->Java Build Path->Source->Add Folder и затем нажмите на classes (или bin, куда бы вы ни компилировали свои файлы классов).
Это прекрасно работает в Eclipse, если щелкнуть правой кнопкой мыши на AllTests.java и выбрать RunAs->Junit
На веб-сайте ScalaIDE есть вики-страница, посвященная запуску модульных тестов Scala в Eclipse . Если у вас есть особые проблемы с запуском модульных тестов specs, я рекомендую вам публиковать сообщения в списке рассылки specs-users .
Эрик.