【问题标题】:Sbt test file cannot find value from src fileSbt 测试文件无法从 src 文件中找到值
【发布时间】:2015-11-16 14:04:57
【问题描述】:

我的带有 scala-test 的 sbt 项目是标准布局:

sbt-example
    build.sbt
    src/main/scala/local/search/BinarySearch.scala
    src/main/scala/local/util/Utility.scala
    src/test/scala/local/search/SearchingSuite.scala

我的 build.sbt 很简单:

name := "helloworld"
version := "1.0"
scalaVersion := "2.11.7"

libraryDependencies ++= Seq(
    "org.scalatest" %% "scalatest" % "2.2.4"
)

我的 BinarySearch.scala 看起来像:

package local.search

object BinarySearch {
    // def ...
}

我的 SearchingSuite.scala 看起来像:

package local.search

import org.scalatest.FunSuite

class SearchingSuite extends FunSuite{
    // call functions from BinarySearch object
}

运行命令是:

sbt compile
sbt "test-only local.search.SearchingSuite"

然后 sbt 报错:

not found: value BinarySearch

我的代码有什么问题?如果我需要使用 Utility.scala 中的一些对象,如何在 SearchingSuite.scala 中导入?

谢谢,任何答案都会投票!

【问题讨论】:

    标签: scala import build sbt scalatest


    【解决方案1】:

    假设您正在学习 A 类;而A类需要B类。只要A和B属于两个不同的包,就得导入B类。

    在您的情况下,SearchingSuite 和 BinarySearch 属于两个不同的包。特别是前者属于main源码包,后者属于test源码包。因此,您必须在 SearchingSuite 中导入 BinarySearch。否则会出现你遇到的编译错误。

    要使用 Utility 中的某个对象,您可以

    导入 local.util.Utility

    如果 Utility 是一个类,或者

    导入 local.util.Utility._

    如果 Utility 是一个对象。

    如果你正在使用一些 IDE,比如 Intellij 或 Eclipse,右键单击错误突出显示,IDE 会弹出一些建议。

    【讨论】:

    • 嗨,谢谢。但我只是在测试文件中添加“import local.search.BinarySearch”,它说“object BinarySearch 不是包 local.search 的成员”。我想我需要使用完整的包名?什么是完整的包名?
    • 您应该将您的代码推送到github,以便我们查看和帮助您。
    • 谢谢,我真的想通了。 BinarySearch 对象与 SearchingSuite 在同一个包中声明,因此不需要导入。该错误来自 sbt 的怪异行为:有时如果您没有完全删除文件(将它们放入回收站不是“完整的”),sbt 仍在查看那个“幽灵”文件。我的项目在github.com/jz33/Spark-Standalone-Mllib-Test-Suites
    猜你喜欢
    • 2017-05-23
    • 2014-10-31
    • 2020-05-18
    • 2016-09-15
    • 2019-03-14
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    • 1970-01-01
    相关资源
    最近更新 更多