如何使用 scalatest 运行 sbt 测试?我有一个错误:对象 scalatest 不是包 org 的成员

Posted

技术标签:

【中文标题】如何使用 scalatest 运行 sbt 测试?我有一个错误:对象 scalatest 不是包 org 的成员【英文标题】:How do I run sbt test with scalatest? I had an error: object scalatest is not a member of package org 【发布时间】:2021-05-24 22:16:02 【问题描述】:

我想使用 scalatest 在以下项目中测试我的代码。

MyProject/
+ src
  - main/scala/mypackage1/Calc.scala
  - test/scala/mypackage1/CalcTest.scala
- built.sbt

内置.sbt

libraryDependencies += "org.scalactic" %% "scalactic" % "3.2.2"
libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.2" % "test

Calc.scala

package mypackage1

object Calc extends App 
  def add(x: Int, y: Int) = x + y

CalcTest.scala

package mypackage1

class CalcTest extends org.scalatest.funsuite.AnyFunSuite 
  test("Calc.add") 
    assert(Calc.add(1, 2) == 3)
  

我在test/scala/mypackage1 中运行sbt test,但出现编译错误。 我该怎么办?

[error] /workspaces/MyProject/src/test/scala/myproject1/CalcTest.scala:3:28: object scalatest is not a member of package org
[error] class CalcTest extends org.scalatest.funsuite.AnyFunSuite 
[error]                            ^

【问题讨论】:

你在运行测试之前是否重新加载了你的 sbt 项目定义? 您使用的是哪个 Scala 版本? 尝试sbt dependencyTree(在 sbt 1.4 及更高版本中)查看正在加载哪些 jar - 描述中的 libraryDependencies 应该可以工作,但您的 build.sbt 似乎存在问题 【参考方案1】:

抱歉,我自己解决了这个问题。 我在MyProject 目录(项目的根目录,而不是test/scala/mypackage1)中运行stb test,它工作正常。 感谢您的帮助。

【讨论】:

以上是关于如何使用 scalatest 运行 sbt 测试?我有一个错误:对象 scalatest 不是包 org 的成员的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ScalaTest / SBT 中按顺序运行测试套件?

使用 ScalaTest 时从 SBT 中排除特别标记的测试

sbt 中的 ScalaTest:有没有办法在没有标签的情况下运行单个测试?

使用 ScalaTest 和 SBT android-sdk-plugin

如何在 sbt 中运行和编译准确的一项测试?

使用scalatest,sbt目录结构时出错