正如标题所说,我有一个带有一个模块的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
)
让我知道我还能做些什么来帮助它,它真的让我的大脑陷入困境。
答案 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"
)
似乎很不礼貌!