【问题标题】:sbt sub project testOnly ( scalatest ) not workingsbt 子项目 testOnly ( scalatest ) 不工作
【发布时间】:2018-09-18 12:56:27
【问题描述】:

我遇到的问题是我无法使用 testOnly 为特定模块运行一项测试..

lazy val root = (project in file("."))
  .settings(Commons.settings: _*)
  .aggregate(utils, `some-service`, otherService)

如果在 sbt 我这样做:project some-service 然后testOnly *MyTest 我收到一个错误:

[error] Expected ID character
[error] Not a valid command: testOnly
[error] Expected project ID
[error] Expected configuration
[error] Expected ':' (if selecting a configuration)
[error] Expected key
[error] Expected '::'
[error] Expected end of input.

运行所有测试都很好,但不仅仅是特定的。 有人知道怎么做吗? 谢谢!

编辑:

val settings: Seq[Def.Setting[_]] = Seq(
    version := appVersion,
    scalaVersion := "2.11.11",
    resolvers += Opts.resolver.mavenLocalFile,
    resolvers += "conjars" at "http://conjars.org/repo",
    resolvers += "clojars" at "https://clojars.org/repo",
    resolvers += "RedisLabs" at "https://dl.bintray.com/spark-packages/maven/",
    scalacOptions ++= Seq(
      "-unchecked",
      "-deprecation",
      "-feature",
      "-language:existentials",
      "-language:higherKinds",
      "-language:implicitConversions",
      "-language:postfixOps",
      "-Ywarn-dead-code",
      "-Ywarn-infer-any",
      "-Ywarn-unused-import",
      "-Xfatal-warnings",
      "-Xlint"
    )
  )

lazy val `some-service` = (project in file(s"$servicePrefix-service"))
  .settings(Commons.settings: _*)
  .settings(
    libraryDependencies ++= someService
  )
  .settings(
    Seq(
      daemonUser.in(Docker) := "root",
      version.in(Docker) := "latest",
      dockerBaseImage := "openjdk:8",
      dockerExposedPorts := Vector(8080),
      javaOptions in Test += "-Dconfig.resource=application.test.conf",
      fork in Test := true,
      startDynamoDBLocal := startDynamoDBLocal.dependsOn(compile in Test).value,
      test in Test := (test in Test).dependsOn(startDynamoDBLocal).value,
      testOnly in Test := (testOnly in Test).dependsOn(startDynamoDBLocal).value,
      testOptions in Test += dynamoDBLocalTestCleanup.value
      //dynamoDBLocalInMemory := false ,
      //dynamoDBLocalDBPath := Some("local-db/"),
      //dynamoDBLocalCleanAfterStop := true
    )
  )
  .dependsOn(utils, otherService)
  .enablePlugins(JavaAppPackaging, DockerPlugin)

【问题讨论】:

  • 您在Commons.settingssome-service 的设置中是否有最大依赖?
  • 没有它,代码将无法编译:)
  • 好的,请在问题中添加更多build.sbt
  • 你需要什么?
  • Commons.settings, some-service 项目定义,如果有任何东西在build.sbt 之外或root 或任何其他项目定义(即GlobalThisBuild 范围)中浮动。

标签: sbt scalatest


【解决方案1】:

好的,我找到了原因。

testOnly in Test := (testOnly in Test).dependsOn(startDynamoDBLocal).value

应该改为:

testOnly in Test := (testOnly in Test).dependsOn(startDynamoDBLocal).evaluated

【讨论】:

    猜你喜欢
    • 2018-11-15
    • 1970-01-01
    • 2018-02-12
    • 2013-10-21
    • 2020-10-22
    • 2015-04-29
    • 1970-01-01
    • 2017-11-17
    • 2020-03-19
    相关资源
    最近更新 更多