【问题标题】:How do I run a scala ScalaTest in IntelliJ idea?如何在 IntelliJ 想法中运行 Scala ScalaTest?
【发布时间】:2011-05-29 08:56:20
【问题描述】:

我正在尝试在 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

【问题讨论】:

  • 如果您提到实际的版本号会很好。 “最新”是一个移动的目标。
  • 重要提示:根据具体情况,IntelliJ 不会选择使用 ScalaTest 编写的测试用例,例如 FunSpec。确保配置“运行配置”->“ScalaTest”,以便组合“测试类型”显示“全部在包中”。我的意思是:以这种方式配置默认值,否则 IntelliJ 可能会也可能不会按照您期望的方式创建新配置。
  • 重要#2:如果您使用的是 SBT,请使用 sbt-idea 插件来为 IntelliJ 生成配置文件,这些文件在您定义“运行配置”时需要。
  • 右键运行测试不行吗?

标签: unit-testing scala intellij-idea scalatest


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    这对我有用: 编辑配置 -> 测试类型:All in package

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 所以,我从 ScalaTest 切换到 Specification,现在它可以工作了。我可以确认您不需要样板类,也不需要 @RunWith: import org.specs._ object AuthorisationParserSpec extends Specification { 会做
      【解决方案4】:

      ScalaTest 在所有可能性中都有an Overview;我只是用

      注释了所有测试类
      @RunWith(classOf[JUnitRunner])
      

      【讨论】:

        【解决方案5】:

        AFAIK,JUnitRunner 正是为此而生。

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            【解决方案7】:

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

            【讨论】:

              【解决方案8】:

              以防它对任何人有所帮助——我对 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
                  }
              
              }
              

              【讨论】:

                【解决方案9】:

                我遇到了“空测试套件”。在 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
                • Scala 版本:2.11.8
                • ScalaTest 版本:3.0.1

                【讨论】:

                  【解决方案10】:

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

                  【讨论】:

                    猜你喜欢
                    • 2014-02-16
                    • 2013-09-21
                    • 2020-10-30
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2018-12-15
                    • 2014-08-31
                    相关资源
                    最近更新 更多