scala - 如何在 sbt 中运行和编译准确的一项测试?
问题描述
我正在处理一个使用 SBT 用 Scala 编写的遗留项目。单元测试是用 ScalaTest 编写的。问题是有很多测试类有编译错误。
我只想运行这些测试类中的一个,并且我知道只运行一个测试我应该尝试这样的事情:
test:testOnly *myClass
但是当我运行这个命令时,SBT 将尝试编译整个项目,正如我所说,有很多测试类有编译错误。有什么方法可以准确地告诉 SBT 哪些类需要编译,而其他类将被忽略?
解决方案
考虑像这样定义一个单参数自定义命令build.sbt
commands += Command.single("compileAndTestOnly") { (state, file) =>
s"""set sources in Test := (sources in Test).value.filter(_.name.contains("$file"))""" ::
"test" :: state
}
现在运行它compileAndTestOnly MySpec.scala
。此命令将Test / sources
设置修改为仅包含一个文件,如下所示
sources in Test := (sources in Test).value.filter(_.name.contains(file))
注意sources in Compile
保持不变。之后它执行test
实际上编译并运行单个测试。
这个答案的灵感来自0__。
推荐阅读
- c# - 最后字符为空白时的滚动问题
- android - 如何实现android spinner的重选
- google-sheets - 每当我编辑范围的任何单元格时,对所有有效行进行保护触发
- c# - async/await 方法调用有什么用?
- python - 小刻度未正确显示
- react-router-dom - 应用程序 'react app1' 在状态 LOADING_SOURCE_CODE: [qiankun] 中死亡:#react-app1 的目标容器在 react app1 加载时不存在
- django - 如何使用 docker 和 nginx 在同一台服务器上运行多个站点?
- yocto - 为多个板构建时如何保持 Yocto 工作空间最小?
- android - Android Talkback:遍历1个元素的所有项目后如何移出水平滚动RecyclerView
- laravel - 如何在 Laravel Admin 中以相反的顺序显示记录?