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 找不到要运行或编译的测试的主要内容,如果未能解决你的问题,请参考以下文章
IntelliJ Idea 找不到 sbt-idea-compiler-indices
为什么sbt build失败并出现“MissingRequirementError:找不到编译器镜像中的对象scala.runtime。”?