You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过sbt testOnly仅运行Scala项目指定包的单元测试?

如何用sbt testOnly运行指定包下的所有测试?

刚好我日常用sbt管理Scala项目时经常遇到这类需求,结合你的项目结构(src/test/scala/notification/unit 存放单元测试),可以通过通配符匹配包路径来实现,具体用法如下:

1. 运行unit包下所有直接测试类

如果只想运行notification.unit包下的测试类(不包含其子包),直接用单个*通配符匹配包内所有类:

sbt "test:testOnly notification.unit.*"

这里的notification.unit对应你项目里的包路径,*会匹配该包下所有符合sbt测试规范的类(比如以Spec/Test结尾的类)。

2. 运行unit包及其所有子包的测试

如果你的unit包还有嵌套子包,想要一次性运行所有层级的测试,就用**通配符:

sbt "test:testOnly notification.unit.**"

**会递归匹配目标包下的所有子包及其中的测试类。

3. sbt交互模式下的简化写法

如果你已经进入了sbt的交互终端(直接输入sbt回车进入),可以不用加引号,直接输入:

testOnly notification.unit.*

这样写更简洁,适合频繁调试测试的场景。

补充小提示

  • 记得包名要和代码里的声明一致(比如代码里是package notification.unit,命令里就用这个路径),拼写错误会导致找不到测试类。
  • 如果你想同时匹配多个包,比如既运行unit又运行另一个包的测试,可以用逗号分隔:sbt "test:testOnly notification.unit.* notification.another.*"

内容的提问来源于stack exchange,提问作者ARYA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 17:47:53