【问题标题】:Unable to resolve dependencies from test无法从测试中解决依赖关系
【发布时间】:2019-11-28 06:36:41
【问题描述】:

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

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

但我无法使用测试类“ProcessCSVTest.scala”中的 FunSuite 类进行测试,因为它给出了编译错误。

虽然我可以在 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

谁能告诉我哪里做错了?

【问题讨论】:

  • 我在截图中没有看到导入语句

标签: scala intellij-idea sbt scalatest


【解决方案1】:

一个问题是测试 ProcessCSVTest.scala 位于 main 源下,这意味着 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

因此请尝试探索它是如何设置并适合您的项目以匹配的。

【讨论】:

    【解决方案2】:

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

    import org.scalatest.FunSuite
    

    如果你把光标放在它和press Alt+Enter上,你应该得到修复它的建议。

    【讨论】:

      猜你喜欢
      • 2016-02-16
      • 2017-02-20
      • 2019-03-16
      • 2018-05-25
      • 2020-07-01
      相关资源
      最近更新 更多