【问题标题】:Running scala test from command line without SBT在没有 SBT 的情况下从命令行运行 scala 测试
【发布时间】:2021-06-30 06:56:02
【问题描述】:

我试图在没有 SBT 的情况下从命令行运行 scala 测试,但我失败了。我逐行关注documentation

import collection.mutable.Stack
import org.scalatest._
import flatspec._
import matchers._

class FirstSpec extends AnyFlatSpec with should.Matchers {

  "A Stack" should "pop values in last-in-first-out order" in {
    val stack = new Stack[Int]
    stack.push(1)
    stack.push(2)
    stack.pop() should be (2)
    stack.pop() should be (1)
  }

}

错误信息:

> scala -cp scalatest_2.13-3.2.5.jar org.scalatest.tools.Runner -R . -o -s FirstSpec.scala
No such file or class on classpath: org.scalatest.tools.Runner

Repository

【问题讨论】:

    标签: scala scalatest


    【解决方案1】:

    ScalaTest 自 2.3.0 以来一直是 modularised,因此仅 scalatest.jar 工件从原始外壳中是不够的。 sbt 等构建工具通常会自动解决所有传递依赖关系,但是如果您不使用构建工具,则需要手动解决。

    所以下载所有的传递依赖并运行类似的东西

    scala -cp scalatest_2.13-3.2.4.jar:scalatest-compatible-3.2.4.jar:scalatest-core_2.13-3.2.4.jar:scalactic_2.13-3.2.4.jar:scalatest-diagrams_2.13-3.2.4.jar:scalatest-matchers-core_2.13-3.2.4.jar:scalatest-shouldmatchers_2.13-3.2.4.jar:scalatest-flatspec_2.13-3.2.4.jar:scala-xml_2.13-1.3.0.jar org.scalatest.run ExampleSpec
    

    或者假设所有的传递 jar 都在同一个目录中

    scala -cp '*' org.scalatest.run ExampleSpec
    

    coursier 可以帮助您获取和构建正确的类路径

    scala -cp "$(cs fetch --classpath org.scalatest:scalatest_2.13:3.2.4)" org.scalatest.run ExampleSpec
    

    或使用 coursier 从包含已编译测试的目录中启动主类

    cs launch org.scalatest:scalatest_2.13:3.2.4 -M org.scalatest.run
    

    或者通过提供运行路径-R来启动提供基本GUI的默认主运行器

    cs launch org.scalatest:scalatest_2.13:3.2.4 -- -R .
    

    这里记录一下scalatest.jar的所有传递依赖

    cs resolve org.scalatest:scalatest_2.13:3.2.5   
    
    org.scala-lang:scala-library:2.13.4:default
    org.scala-lang:scala-reflect:2.13.4:default
    org.scala-lang.modules:scala-xml_2.13:1.2.0:default
    org.scalactic:scalactic_2.13:3.2.5:default
    org.scalatest:scalatest-compatible:3.2.5:default
    org.scalatest:scalatest-core_2.13:3.2.5:default
    org.scalatest:scalatest-diagrams_2.13:3.2.5:default
    org.scalatest:scalatest-featurespec_2.13:3.2.5:default
    org.scalatest:scalatest-flatspec_2.13:3.2.5:default
    org.scalatest:scalatest-freespec_2.13:3.2.5:default
    org.scalatest:scalatest-funspec_2.13:3.2.5:default
    org.scalatest:scalatest-funsuite_2.13:3.2.5:default
    org.scalatest:scalatest-matchers-core_2.13:3.2.5:default
    org.scalatest:scalatest-mustmatchers_2.13:3.2.5:default
    org.scalatest:scalatest-propspec_2.13:3.2.5:default
    org.scalatest:scalatest-refspec_2.13:3.2.5:default
    org.scalatest:scalatest-shouldmatchers_2.13:3.2.5:default
    org.scalatest:scalatest-wordspec_2.13:3.2.5:default
    org.scalatest:scalatest_2.13:3.2.5:default
    

    【讨论】:

      猜你喜欢
      • 2014-12-17
      • 2022-07-01
      • 1970-01-01
      • 2014-07-04
      • 2016-09-10
      • 2021-12-05
      • 1970-01-01
      • 2017-09-02
      • 2023-01-09
      相关资源
      最近更新 更多