22

我正在尝试在 Intellij IDEA(最新的社区版本,带有最新的 Scala 插件)中运行 scala flatspec 测试,但我不断收到“空测试套件”错误。

我尝试在右键单击时使用正常的“运行”菜单,但它不起作用。我还尝试创建一个新的 ScalaTest 配置,但跑步者仍然没有接受测试。

我能够将 JScalaTest 与单元一起使用,但我真的更喜欢使用 flatspec 语法。

更新:用注释类@RunWith(classOf[JUnitRunner])也无济于事

谢谢!

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

更新:从 ScalaTest 切换到 Spec,解决了这个问题。我仍然更喜欢带有 FlatSpec 的 ScalaTest,但这已经足够了。有效的代码:

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

4

10 回答 10

18

如果 IntelliJ 没有自动获取测试,您可以执行以下操作:

在运行配置中,创建一个 ScalaTest 运行配置并将其“测试类型”设置为“包中的所有内容”,并将其“测试包”设置为包含测试的包。

于 2013-07-25T08:17:02.033 回答
7

这对我有用:编辑配置-> 测试类型:全部在包中

于 2015-07-21T23:06:27.723 回答
4

我一直在这样运行它(但是我确实觉得它有点冗长,可能会被削减):

@RunWith(classOf[JUnitSuiteRunner])
class AuthorisationParserRunAsTest extends JUnit4(AuthorisationParserSpec)
object AuthorisationParserSpec extends Specification {
  ...
}
于 2010-12-22T13:06:41.987 回答
2

ScalaTest对所有可能性都有一个概述;我只是用注释所有测试类

@RunWith(classOf[JUnitRunner])
于 2013-02-15T14:49:35.747 回答
0

AFAIK,JUnitRunner正是为此。

于 2010-12-22T12:24:54.857 回答
0

只是有点太晚了,但我遇到了同样的问题(“空测试套件”) 在闲逛 IDEA 错误跟踪器之后,我找到了适合我的案例的解决方案:
我的scala版本曾经是2.9.0-1并且scala-test有版本2.8.*。它在升级到最新版本(与 scala 相同)
后开始工作。scala-test

于 2011-07-24T00:15:42.533 回答
0

我已经能够在 IntelliJ 中运行 FunSuite 测试而没有任何问题。但是,我在使用 FlatSpec 测试时发现,如果使用 Ctrl+Shift+F10(即运行所有测试),您需要右键单击或将光标放在实际的测试类定义上才能正确执行所有定义的测试并避免令人沮丧的“空测试套件”错误。

于 2015-02-02T23:03:32.827 回答
0

万一它对任何人都有帮助——我对 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
    }

}
于 2016-07-14T11:26:33.027 回答
0

我遇到了“空测试套件”。在 FlatSpec 中运行单个测试时也会出现问题。我将根本原因缩小到行为字符串开头的空格。

前任。在下面的代码中,第一个测试将运行,但第二个不会(如果单独运行)。这是由于行为字符串“未运行”的开头存在空格。如果您将其取下并再次运行,它应该可以工作。

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.1C
  • 斯卡拉版本:2.11.8
  • ScalaTest 版本:3.0.1
于 2018-06-29T20:09:22.373 回答
0

您必须Test在文件末尾创建它,然后单击Run on Sbt在测试配置中。

于 2020-02-06T21:41:46.543 回答