Scala SBT可以';找不到要运行或编译的测试

Scala SBT可以';找不到要运行或编译的测试,scala,sbt,scalatest,typesafe-activator,Scala,Sbt,Scalatest,Typesafe Activator,正如标题所说,我有一个带有一个模块的sbt项目(目前),但是test:compile没有捕获任何语法错误(测试也没有找到任何要运行的测试)。按照我的理解,sbt项目的设置包括src/main和src/test(需要配置src/it)。我对SBT有点业余,但我会尽量提供所有相关信息: 结构: Root build.sbt mymodule build.sbt src main scala test scala Ro

正如标题所说,我有一个带有一个模块的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(我认为这些配置是不必要的,但我很绝望):

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

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
)
让我知道我还能做些什么,这真的让我绞尽脑汁。

用line

scalaSource in Test := baseDirectory.value / "test"
您已将sbt配置为在位置
Root/mymodule/test
(而不是在默认位置
/src/test/scala
)查找测试源

因此,您可以选择(i)将测试放在
根/mymodule/test
中,(ii)或者删除该配置行,将测试保留在其默认位置。

带行

scalaSource in Test := baseDirectory.value / "test"
您已将sbt配置为在位置
Root/mymodule/test
(而不是在默认位置
/src/test/scala
)查找测试源


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

我可以看到此问题已得到解决,但发生此情况的原因截然不同。我通过添加sbt插件并启用它,将play框架添加到现有项目中,测试停止运行。可能项目也没有编译,但我没有注意到,因为测试没有运行。play framework sbt插件似乎弄乱了源目录,我必须这样做才能恢复原样:

lazy val root=(文件(“.”)中的项目)
.enablePlugins(PlayService、PlayLayoutPlugin)
.设置(
名称:=“咖啡”,
测试中的scalaSource:=baseDirectory.value/“src/Test/scala”,
编译中的scalaSource:=baseDirectory.value/“src/main/scala”
)

看起来很粗鲁

我可以看出这个问题已经解决了,但我有一个完全不同的原因。我通过添加sbt插件并启用它,将play框架添加到现有项目中,测试停止运行。可能项目也没有编译,但我没有注意到,因为测试没有运行。play framework sbt插件似乎弄乱了源目录,我必须这样做才能恢复原样:

lazy val root=(文件(“.”)中的项目)
.enablePlugins(PlayService、PlayLayoutPlugin)
.设置(
名称:=“咖啡”,
测试中的scalaSource:=baseDirectory.value/“src/Test/scala”,
编译中的scalaSource:=baseDirectory.value/“src/main/scala”
)

看起来很粗鲁

我使用命令
sbt clean compile

我使用命令
sbt clean compile

从我的项目根目录运行
sbt
from。我可以运行
sbt
,它确实加载了项目,我可以通过
projectmymodule
更改项目,但遗憾的是,在我的项目根目录中找不到/运行测试。您从哪里运行
sbt
。我可以运行
sbt
,它确实加载了项目,我可以通过
project mymodule
更改项目,但遗憾的是,找不到/运行良好的测试,我的测试在
Root/mymodule/test
上,所以它应该可以正常工作。实际上,它们在
Root/mymodule/src/test上,所以可能您正在做一些事情……那么这些测试类在哪里呢?在
Root/mymodule/test
下或
Root/mymodule/src/test
下?根据您的原始配置,前者是正确的。好的,我的测试在
Root/mymodule/test
上,所以它应该可以工作,实际上它们在
Root/mymodule/src/test
上,所以可能您正在做一些事情……那么这些测试类在哪里?在
Root/mymodule/test
下或
Root/mymodule/src/test
下?根据您的原始配置,前者是正确的。