命令行界面
命令
vitest
在当前目录中启动 Vitest。在开发环境会自动进入监听(watch
)模式,在 CI 环境会自动进入运行(run
)模式。
你可以通过添加参数作为过滤器来运行测试文件,比如:
vitest foobar
将仅运行路径中包含 foobar
的测试文件。 此过滤器仅检查包含,不支持正则表达式或 glob 模式(除非你的终端在 Vitest 接收过滤器之前对其进行处理)。
vitest run
在没有监听模式的情况下执行单次运行。
vitest watch
运行所有测试套件,监听变化并在变化时重新运行测试。与没有参数的情况下调用 vitest
一样。在 CI 环境中,此命令将回退到 vitest run
。
vitest dev
vitest watch
的别名。
vitest related
仅运行涵盖源文件列表的测试。 适用于静态惰性导入(例如, import('./index.ts')
或者 import index from './index.ts
),但不适用于动态导入(例如, import(filepath)
)。 所有文件都应该相对于根文件夹。
与 lint-staged
或你的 CI 设置一起运行很有用。
vitest related /src/index.ts /src/hello-world.js
不要忘记 Vitest 默认情况下以启用的监视模式运行。如果你使用的是 lint-staged
之类的工具,你还应该传递 --run
选项,以便该命令可以正常退出。
// .lintstagedrc.js
export default {
'*.{js,ts}': 'vitest related --run',
}
vitest bench
仅运行 基准 测试,比较性能结果。
vitest init
vitest-init<name>
可以用于设置项目配置。目前,它只支持 browser
值:
vitest init browser
vitest list
vitest list
命令继承所有的 vitest
选项以打印所有匹配测试的列表。此命令忽略 reporters
选项。默认情况下,它将打印与文件过滤器和名称模式匹配的所有测试的名称:
vitest list filename.spec.ts -t="some-test"
describe > some-test
describe > some-test > test 1
describe > some-test > test 2
你可以传递 --json
标志以 JSON 格式打印测试,也可以将其保存在单独的文件中:
vitest list filename.spec.ts -t="some-test" --json=./file.json
如果 --json
标志没有接收到值,它将把 JSON 输出到 stdout 中。
选项
Vitest 支持 CLI 参数的 both camel case 和 kebab case 。例如,--passWithNoTests
和 --pass-with-no-tests
都有效(--no-color
和 --inspect-brk
是例外)。
Vitest 还支持不同的指定值的方式:--reporter dot
和 --reporter=dot
都是有效的。
如果选项支持值数组,则需要多次传递选项:
vitest --reporter=dot --reporter=default
布尔值选项可以用 no-
前缀来否定。将值指定为 false
也有效:
vitest --no-api
vitest --api=false
changed
- 类型:
boolean | string
- 默认值: false
设置为 true 时,仅对已更改的文件运行测试。默认情况下,将考虑所有未提交的更改(包括已暂存和未暂存的文件)。
要对最近一次提交中的更改运行测试,可以使用--changed HEAD~1
。还可以使用提交哈希(commit hash
)或分支名称。
如果与forceRerunTriggers
配置选项配合使用,并找到与更改的文件匹配的内容,将运行整个测试套件。
与代码覆盖一起使用时,报告将只包含与更改相关的文件。
如果与forceRerunTriggers
配置选项搭配使用,则在forceRerunTriggers
列表中列出的文件至少有一个发生变化时,将运行整个测试套件。默认情况下,Vitest 配置文件和package.json
的更改将始终重新运行整个套件。
shard
- 类型:
string
- 默认值: disabled
测试套件分片,格式为<index>/<count>
,其中count
是正整数,表示分割的部分数index
是正整数,表示当前分片的索引
该命令将将所有测试分成count
个相等的部分,并只运行位于index
部分的测试。例如,要将测试套件分成三个部分,请使用以下命令:shvitest run --shard=1/3 vitest run --shard=2/3 vitest run --shard=3/3
无法在启用 --watch
(默认情况下在开发中启用)时使用此选项。
如果在没有输出文件的情况下使用 --reporter=blob
,则默认路径将包括当前碎片配置,以避免与其他 Vitest 进程发生冲突。
merge-reports
- 类型:
boolean | string
合并位于指定文件夹中的每个 blob 报告(默认情况下为.vitest-reports
)。你可以将任何报告程序与此命令一起使用(blob
除外):
vitest --merge-reports --reporter=junit