如何为使用ScalaTests的Scala SBT项目配置RTS工具Ekstazi/STARTS
Scala + SBT + ScalaTest 项目配置Ekstazi回归测试选择工具操作指南
只引入Ekstazi依赖不会自动触发RTS逻辑,你需要额外配置Java代理、ScalaTest监听器以及测试进程参数,完整配置步骤如下:
1. 完整build.sbt配置
// 引入Ekstazi相关依赖 libraryDependencies ++= Seq( "org.ekstazi" % "org.ekstazi.core" % "5.3.0", "org.ekstazi" % "org.ekstazi.scalatest" % "5.3.0" % Test ) // 必须开启测试进程fork,否则Java代理无法正常挂载 Test / fork := true // 自动识别依赖中的Ekstazi核心包并挂载为Java代理 Test / javaOptions += s"-javaagent:${(Test / dependencyClasspath).value.find(_.data.name.contains("org.ekstazi.core")).get.data.getAbsolutePath}" // 为ScalaTest指定Ekstazi专属监听器,触发RTS筛选逻辑 Test / testOptions += Tests.Argument(TestFrameworks.ScalaTest, "-C", "org.ekstazi.scalatest.EkstaziReporter") // 关闭SBT自带的测试增量缓存,避免与Ekstazi逻辑冲突 Test / incOptions := (Test / incOptions).value.withUseCachedCustomResolvers(false)
2. 生效验证步骤
- 首次执行
sbt test命令,会全量运行所有测试用例,Ekstazi会自动在项目根目录生成.ekstazi文件夹,存储所有类和测试的依赖映射关系 - 修改任意业务代码后再次执行
sbt test,Ekstazi会自动筛选仅与修改代码相关的测试用例运行,控制台会输出类似Ekstazi: selected 3 tests, skipped 17 tests的日志,代表RTS逻辑生效
3. 常见问题处理
- 若运行时提示找不到Ekstazi代理包:可将org.ekstazi.core的jar包下载到项目根目录的lib文件夹下,将javaOptions配置修改为
Test / javaOptions += "-javaagent:lib/org.ekstazi.core-5.3.0.jar" - 若修改代码后仍全量运行测试:确认当前ScalaTest版本≥3.0.0,Ekstazi 5.3.0仅适配3.0及以上版本的ScalaTest
- 不需要使用RTS时,直接删除上述配置即可恢复默认全量测试逻辑
内容的提问来源于stack exchange,提问作者Ayush Goel
相关产品推荐
相关产品推荐

