SBT无法找到运行或编译的测试

时间:2017-05-10 18:24:03

标签: scala sbt scalatest typesafe-activator

正如标题所说,我有一个带有一个模块的sbt项目(现在),但是test:compile没有发现任何语法错误(并且测试没有找到任何测试跑)。我理解它的方式,一个sbt项目设置src / main,src / test(src /它需要配置)。我是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
)

让我知道我还能做些什么来帮助它,它真的让我的大脑陷入困境。

3 个答案:

答案 0 :(得分:1)

有线

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

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

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

答案 1 :(得分:1)

我用命令sbt clean compile

解决

答案 2 :(得分:0)

我可以看到此问题已解决,但是发生这种情况的原因却截然不同。通过添加sbt插件并启用它,我将play框架添加到了现有项目中,并且我的测试停止了运行。该项目可能也未编译,但由于测试未运行,所以我没有注意到。 play框架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"
  )

似乎很不礼貌!