Как запустить Scala ScalaTest в IntelliJ idea?

Я пытаюсь запустить тест Scala flatspec в Intellij IDEA (последняя сборка сообщества с последним плагином Scala), но я продолжаю получать ошибки "пустой тестовый набор".

Я попытался использовать обычное меню " run " при щелчке правой кнопкой мыши, но это не работает. Я также попытался создать новую конфигурацию ScalaTest, но все равно бегун не собирает тесты.

я смог использовать JScalaTest с unit, но я бы предпочел использовать flatspec синтаксис.

обновление: аннотирование класс @RunWith(classOf[JUnitRunner]) не помогает

спасибо!

class SampleTestSpec extends FlatSpec with ShouldMatchers {
    "test" should "fail" in {
        "this" should equal ("that")
    }
}

UPDATE: переключение с ScalaTest на Spec решило проблему. Я по-прежнему предпочитаю ScalaTest с FlatSpec, но этого достаточно. Код, который работает:

import org.specs._
object SampleTestSpec extends Specification {
    "'hello world' has 11 characters" in {
     "hello world".size must be equalTo(113)
  }
  "'hello world' matches 'h.* w.*'" in {
     "hello world" must be matching("h.* w.*")
  }
}

-teo

9 ответов


я запускал его так (однако я нахожу его немного многословным, и его, вероятно, можно сократить):

@RunWith(classOf[JUnitSuiteRunner])
class AuthorisationParserRunAsTest extends JUnit4(AuthorisationParserSpec)
object AuthorisationParserSpec extends Specification {
  ...
}

Если IntelliJ не берет тесты автоматически, вы можете сделать следующее:

в конфигурации Run создайте конфигурацию ScalaTest run и настройте ее "тестовый вид" на "все в пакете" и ее "тестовый пакет" на пакет, содержащий ваши тесты.


Это сработало для меня: Редактировать конфигурации - > вид теста: все в пакете


ScalaTest и обзор по всем возможностям; я просто аннотировал все тестовые классы с

@RunWith(classOf[JUnitRunner])

насколько мне известно, в JUnitRunner - именно для этого.


немного поздно, но я столкнулся с той же проблемой ("пустой тестов") после зависания вокруг IDEA bug tracker я нашел решение для своего случая:
Мой scala версия 2.9.0-1 и scala-test версия 2.8.*.
Он начал работать после обновления scala-test до самой новой версии (такой же, как scala).


Я смог запустить тесты FunSuite в IntelliJ без каких-либо проблем. Однако при работе с тестами FlatSpec я обнаружил, что вам нужно щелкнуть правой кнопкой мыши или поместить курсор на фактическое определение тестового класса, если вы используете Ctrl+Shift+F10 (т. е. запустите все тесты), чтобы правильно выполнить все определенные тесты и избежать разочаровывающих ошибок "пустой набор тестов".


в случае, если это кому-то поможет-я попал в Scala, и это было из-за того, как я структурировал свой тестовый класс. У меня было

class SomeTests extends FlatSpec {
  def aTest = {
    "This thing when that thing happens" should
    "return some particular response" in {
      // ... test body
    }
  }
}

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

class SomeTests extends FlatSpec {

    "This thing when that thing happens" should
    "return some particular response" in {
      // ... test body
    }

}

я столкнулся с " пустым набором тестов."проблема при выполнении отдельных тестов в FlatSpec, а также. Я сузил первопричину до пробела в начале строки поведения.

Ex. В следующем коде первый тест будет запущен, а второй-нет (если выполняется отдельно). Это связано с наличием пробела в начале строки поведения "не выполняется". Если вы снимете его и запустите снова, он должен работать.

import org.scalatest.FlatSpec

class FlatSpecWhiteSpaceTest extends FlatSpec {
    "TestWithNoEmptySpace" should "run" in {
        runTest
    }

    "TestWithEmptySpace" should " not run" in {
        runTest
    }

    def runTest(): Unit = {
        val expectedValue = true
        val actualValue = true
        assert(expectedValue === actualValue)
    }
}
  • IDE: Intellij IDeA 2017.1 C
  • Версия Scala: 2.11.8
  • ScalaTest Версия: 3.0.1