SBT 无法找到 运行 的测试也无法编译
SBT can't find tests to run nor compile
正如标题所说,我有一个只有一个模块的 sbt 项目(目前),但是 test:compile
没有发现任何语法错误(并且测试没有找到 运行).按照我的理解,一个 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
)
让我知道我还能做些什么来帮助,真是绞尽脑汁。
连线
scalaSource in Test := baseDirectory.value / "test"
您已将 sbt 配置为在位置 Root/mymodule/test
(而不是在默认位置 <base>/src/test/scala
)查找测试源。
因此,您的选择是 (i) 将测试放在 Root/mymodule/test
内,(ii) 或删除该配置行,将测试留在默认位置。
我可以看到这个问题已经解决了,但我发生这种情况的原因完全不同。我通过添加 sbt 插件并启用它,将播放框架添加到现有项目中,然后我的测试停止了 运行ning。可能该项目也没有编译,但我没有注意到,因为测试没有 运行。 play framework 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 clean compile
解决
正如标题所说,我有一个只有一个模块的 sbt 项目(目前),但是 test:compile
没有发现任何语法错误(并且测试没有找到 运行).按照我的理解,一个 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
)
让我知道我还能做些什么来帮助,真是绞尽脑汁。
连线
scalaSource in Test := baseDirectory.value / "test"
您已将 sbt 配置为在位置 Root/mymodule/test
(而不是在默认位置 <base>/src/test/scala
)查找测试源。
因此,您的选择是 (i) 将测试放在 Root/mymodule/test
内,(ii) 或删除该配置行,将测试留在默认位置。
我可以看到这个问题已经解决了,但我发生这种情况的原因完全不同。我通过添加 sbt 插件并启用它,将播放框架添加到现有项目中,然后我的测试停止了 运行ning。可能该项目也没有编译,但我没有注意到,因为测试没有 运行。 play framework 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 clean compile