无法解决测试的依赖关系

时间:2019-07-19 09:29:43

标签: scala intellij-idea sbt scalatest

我是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中看到外部库中的依赖项

enter image description here

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

谁能告诉我我做错了什么地方?

2 个答案:

答案 0 :(得分:2)

一个问题是测试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

所以尝试探索它的设置方式以及适合您的项目的要求。

答案 1 :(得分:0)

由于FunSuite位于软件包中,因此您需要添加

import org.scalatest.FunSuite

如果将光标放在其上并press Alt+Enter,则应该获得修复它的建议。