无法从测试中解析依赖关系

Unable to resolve dependencies from test

我是 Scala 的新手。我正在尝试在 IntellIj 中创建一个 scala 项目并添加一个测试 class。 我在 sbt 中使用以下 2 个依赖项。

libraryDependencies += ("org.scalactic" %% "scalactic" % "3.0.8")
// https://mvnrepository.com/artifact/org.scalatest/scalatest
libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.8" % Test

但是我无法在测试中使用 class FunSuite class 'ProcessCSVTest.scala' 进行测试,因为它给出了编译错误。

虽然我可以在我的 IntellIj 中看到外部库中的依赖项

Build.sbt 文件

name := "CSVParser"

version := "0.1"

scalaVersion := "2.13.0"

libraryDependencies += ("org.scalactic" %% "scalactic" % "3.0.8")
// https://mvnrepository.com/artifact/org.scalatest/scalatest
libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.8" % Test

完整的代码可以在这里找到 - https://github.com/practice09/CSVParser

谁能告诉我哪里做错了?

因为FunSuite在一个包里,所以需要加上

import org.scalatest.FunSuite

如果您将光标放在它上面 press Alt+Enter,您应该会得到修复它的建议。

一个问题是测试 ProcessCSVTest.scalamain 源下,这意味着 ScalaTest 需要在主类路径上,但是在 build.sbt 中,ScalaTest 依赖的范围是 Test类路径

libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.8" % Test

因此,如果您像这样删除 Test 作用域

libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.8"

然后 ScalaTest 将在主类路径中结束,我们可以添加以下导入

import org.scalatest.FunSuite

但是我的建议是将测试移出主要来源并将它们放在 src/test/scala/ 下,然后像以前一样 Test 下的依赖范围

libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.8" % Test

以下命令构建了一个具有 sbt 预期的正确项目结构的示例

sbt new scala/scala-seed.g8

所以尝试探索它是如何设置的并适合您的项目。