SBT 找不到要运行或编译的测试

Posted

技术标签:

【中文标题】SBT 找不到要运行或编译的测试【英文标题】:SBT can't find tests to run nor compile 【发布时间】:2017-10-09 13:12:35 【问题描述】:

正如标题所说,我有一个带有一个模块的 sbt 项目(目前),但 test:compile 没有捕获任何语法错误(并且 test 没有找到任何要运行的测试)。我理解它的方式是,一个 sbt 项目带有 src/main 和 src/test (需要配置 src/it)。我对 SBT 有点业余,但我会尽力提供所有相关信息:

结构:

Root
  build.sbt
  mymodule
    build.sbt
    src
      main
        scala
      test
        scala 

Root build.sbt(我认为这些配置是不必要的,但我很绝望):

lazy val `mymodule` = (project in file("mymodule"))
  .configs(Test)
  .settings(scalaSource in Test := baseDirectory.value / "test")

MyModule build.sbt 基本上只是一个 libraryDependencies 列表(除非其中一个是问题,不确定),如下所示:

libraryDependencies ++= Seq(
  "org.mockito" % "mockito-all" % "1.9.5" % "test",
  "org.scalamock" %% "scalamock-core" % scalaMockVersion % "test",
  "org.scalamock" %% "scalamock-scalatest-support" % scalaMockVersion % "test",
  "org.codehaus.janino" % "janino" % "2.7.8",
  "org.http4s" %% "http4s-dsl" % "0.11.2",
  "org.http4s" %% "http4s-blaze-server" % "0.11.2",
  "junit" % "junit" % "4.8.1" % "test" // Here because of a bug in Ivy
)

让我知道我还能做些什么来提供帮助,这真的让我绞尽脑汁。

【问题讨论】:

你在哪里运行sbt 来自我的项目根目录。我可以运行sbt,它确实会加载项目,我可以通过project mymodule 更改项目,但可惜找不到/运行任何测试 【参考方案1】:

我用命令sbt clean compile解决

【讨论】:

【参考方案2】:

带线

scalaSource in Test := baseDirectory.value / "test"

您已将 sbt 配置为在位置 Root/mymodule/test(而不是默认位置 <base>/src/test/scala)查找测试源。

因此,您的选择是 (i) 将测试放在 Root/mymodule/test 中,(ii) 或删除该配置行,将测试留在默认位置。

【讨论】:

好吧,我的测试在Root/mymodule/test,所以它应该可以工作 实际上他们在Root/mymodule/src/test 所以也许你正在做某事...... 那么这些测试类在哪里呢?在Root/mymodule/test 下还是Root/mymodule/src/test 下?根据你原来的配置,前者是正确的。【参考方案3】:

我可以看到这个问题已经解决,但我遇到这种情况的原因非常不同。我通过添加 sbt 插件并启用它,将播放框架添加到现有项目中,并且我的测试停止运行。可能该项目也没有编译,但我没有注意到,因为测试没有运行。播放框架 sbt 插件似乎与源目录混淆,我必须这样做才能将其恢复原状:

lazy val root = (project in file("."))
  .enablePlugins(PlayService, PlayLayoutPlugin)
  .settings(
    name := "Coffee",
    scalaSource in Test := baseDirectory.value / "src/test/scala",
    scalaSource in Compile := baseDirectory.value / "src/main/scala"
  )

看起来很粗鲁!

【讨论】:

以上是关于SBT 找不到要运行或编译的测试的主要内容,如果未能解决你的问题,请参考以下文章

由于找不到依赖项而导致编译Scala程序失败

编译错误 找不到工程或库

IntelliJ Idea 找不到 sbt-idea-compiler-indices

错误:找不到或无法加载主类 Test.java

java中找不到主类是啥问题

为什么sbt build失败并出现“MissingRequirementError:找不到编译器镜像中的对象scala.runtime。”?