我有一个库,希望在 Scala 的单元测试和代码本身中公开。
在 sbt 中,我使用配置 "test"
添加了我的库依赖项,然后它可用于测试,但我不能在代码中使用它。如果我保留配置或添加 "compile"
,则无法在单元测试中导入它。
libraryDependencies ++= Seq(
"org.scalacheck" %% "scalacheck" % "1.14.0",
"org.scalatest" %% "scalatest" % "3.0.6" % "test",
"org.scalactic" %% "scalactic" % "3.0.6" % "test")
主要问题是我公开了一个我想在其他代码中到处使用的抽象类:abstract class UnitSpec extends FlatSpec with Matchers with ScalaCHeckDrivenPropertyChecks
并且还在库的测试中使用.如果我将 "test"
添加到 ScalaCheck,它就无法在库的主代码中找到它。如果我保持原样,它不能来自 org.scalatestplus.scalacheck.ScalaCheckDrivenPropertyChecks
。这曾经没问题,并且可以与 3.0.5 和 GeneratorDrivenProperyChecks
一起正常工作,但已被弃用。
有没有办法实现我想要的?我尝试了 "test->compile"
但这也没有达到我希望的效果...
最佳答案
您可以组合配置。为了在编译和测试中都有一个库,您只需添加机器人配置。
// wrong: libraryDependencies += "<organization>" %% "<module>" % "<version>" % "compile->compile" % "test->compile"
语法大概意思是:项目配置 dependsOn(->) libraryDependency的配置。
更新
您还可以使用不同的配置两次添加依赖项。
libraryDependencies += "<organization>" %% "<module>" % "<version>",
libraryDependencies += "<organization>" %% "<module>" % "<version>" % "test"
更新 2
我认为第一个示例中的语法不是我想要提供的。
libraryDependencies += "<organization>" %% "<module>" % "<version>" % "compile->compile;test->compile"
至少那是我在 libraryDependencies
中使用的。
关于Scala 库可用于编译和测试配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55047355/