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

如何运行默认被排除的munit测试?命令行参数不生效问题

问题描述

我编写了如下MUnit测试:

package myawesomeproject

import munit.FunSuite

class MySillyTest extends FunSuite {
  val theTag = new munit.Tag("tagname")
  test("THETEST".tag(theTag)) {
    assertEquals(2, 3)
  }
}

并在build.sbt中配置默认排除该测试:

lazy val myawesomeproject = project
  .in(file("myawesomeproject"))
  .settings(
    // ...
    Test / testOptions += Tests.Argument(MUnitFramework, "--exclude-tags=tagname")
  )

运行test命令时,测试按预期被排除。但执行myawesomeproject / testOnly -- --tests=THETEST --include-tags=tagname命令尝试手动覆盖排除规则时,该测试仍未执行,命令行设置似乎无法覆盖build.sbt中的配置。


解决办法

1. 命令行清空排除规则后再添加包含规则

MUnit的过滤逻辑是先执行排除规则,再执行包含规则。要先在命令行清空默认的排除列表,再指定要包含的标签:

myawesomeproject / testOnly -- --exclude-tags= --include-tags=tagname --tests=THETEST

这里--exclude-tags=表示清除所有预先设置的排除标签,后续的--include-tags就能正常生效。

2. 临时重置testOptions参数

通过sbt的set命令临时覆盖build.sbt中的testOptions配置,直接指定要包含的标签:

sbt "set Test / testOptions := Seq(Tests.Argument(MUnitFramework, '--include-tags=tagname'))" "myawesomeproject / testOnly -- --tests=THETEST"

3. 用系统属性控制排除规则

修改build.sbt,通过系统属性决定是否启用排除规则,无需修改配置就能灵活切换:

Test / testOptions ++= {
  if (sys.props.get("runExcluded").contains("true")) Nil
  else Seq(Tests.Argument(MUnitFramework, "--exclude-tags=tagname"))
}

运行时添加系统属性即可执行被排除的测试:

sbt -DrunExcluded=true "myawesomeproject / testOnly -- --tests=THETEST"

4. 创建独立的测试配置

在build.sbt中新增一个专门用于运行被排除测试的配置,避免和默认测试配置冲突:

lazy val ExcludedTests = config("excluded") extend Test

lazy val myawesomeproject = project
  .in(file("myawesomeproject"))
  .configs(ExcludedTests)
  .settings(
    inConfig(ExcludedTests)(Defaults.testSettings),
    // 该配置下默认包含tagname标签的测试
    ExcludedTests / testOptions := Seq(Tests.Argument(MUnitFramework, "--include-tags=tagname")),
    // 默认测试配置排除tagname标签
    Test / testOptions += Tests.Argument(MUnitFramework, "--exclude-tags=tagname")
  )

之后直接运行该配置下的测试命令:

sbt myawesomeproject/excluded:testOnly -- --tests=THETEST

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 17:35:04