scala - 在 SBT 中测试初始命令

标签 scala sbt

我的 build.sbt 中有一个子项目,其中有一个相当长的 initialCommands 设置,包括一个导入列表和一些定义。我想将其作为常规 CI 的一部分进行测试,否则在重构代码后我不会注意到重大更改。我不清楚该怎么做。

  1. 仅仅运行 sbt console 似乎并没有解决问题,因为即使代码没有编译,也总是有一个“成功”的退出代码。
  2. 将代码移出到在特殊源文件中定义的对象中无济于事,因为我需要存在导入列表(而且我不想蛋糕化我的整个代码库)。
  3. 将代码移出到源文件中,然后使用 :load 加载它也总是会提供成功的退出代码。
  4. 我发现了 scala -e 但它在我的机器上做了一些奇怪的事情(参见下面的错误日志)。

这是 Scala 2.12。

$ scala -e '1'  
cat: /release: No such file or directory
Exception in thread "main" java.net.UnknownHostException: <my-host-name-here>: <my-host-name-here>: Name or service not known

最佳答案

您可以生成一个文件并像任何其他测试文件一样运行它:

(sourceGenerators in Test) += Def.task {
  val contents = """object TestRepl {
{{}}
}""".replace("{{}}", (initialCommands in console).value)
  val file = (sourceManaged in Test).value / "repltest.scala"
  IO.write(file, contents)
  Seq(file)
}.taskValue

关于scala - 在 SBT 中测试初始命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41978611/

相关文章:

scala - 如何找到两个数组列之间的共同元素?

scala - 用状态来修饰我的图书馆

scala - 如何在 SBT 中编写 "import scala.io.Source", "import java.io"库

scala - scala 中对 csv 的强类型访问?

json - scala json4s 我如何按条件提取字段

scala - 发布由 sbt-native-packager 创建的 zip

java - 为什么 SBT 在 Java 中找不到 JavaFX 包

git - merge 到 master 与 sbt release-plugin

scala - 覆盖 spark 的 guava 依赖版本

scala - Intellij的SBT控制台异常: not found: value ideaPort ideaPort in Global := 49516