命令行工具
Rstest 提供了一个轻量级的命令行工具,包含 rstest watch 和 rstest run 等命令。
rstest -h
rstest -h 可帮助你查看所有可用的 CLI 命令及选项:
输出如下:
Usage:
$ rstest [...filters]
Commands:
[...filters] run tests
run [...filters] run tests without watch mode
watch [...filters] run tests in watch mode
list [...filters] lists all test files that Rstest will run
merge-reports [path] merge blob reports from multiple shards
Options:
-w, --watch Run tests in watch mode
-h, --help Display this message
-v, --version Display version number
-c, --config <config>
...
rstest [...filters]
直接运行 rstest 命令将会在当前目录执行 Rstest 测试。
$ npx rstest
✓ test/index.test.ts (2 tests) 1ms
Test Files 1 passed (1)
Tests 2 passed (2)
Duration 189 ms (build 22 ms, tests 167 ms)
Watch 模式
如果你希望在文件更改时自动重新运行测试,可以使用 --watch 或 rstest watch 命令:
rstest run
rstest run 将会执行单次测试,该命令适用于 CI 环境或不需要一边修改一边执行测试的场景。
rstest watch
rstest watch 将会启动监听模式并执行测试,当测试或依赖文件修改时,将重新执行关联的测试文件。
rstest list
rstest list 将会打印所有匹配条件的测试列表。默认情况下,它将打印所有匹配条件的测试名称。
$ npx rstest list
# 输出如下:
a.test.ts > test a > test a-1
a.test.ts > test a-2
b.test.ts > test b > test b-1
b.test.ts > test b-2
rstest list 命令继承所有 rstest 过滤选项,你可以直接过滤文件或使用 -t 过滤指定的测试名称。
$ npx rstest list -t='test a'
# 输出如下:
a.test.ts > test a > test a-1
a.test.ts > test a-2
你可以使用 --filesOnly 使其仅打印测试文件:
$ npx rstest list --filesOnly
# 输出如下:
a.test.ts
b.test.ts
你可以使用 --json 使其以 JSON 格式打印测试或将结果保存到单独的文件中:
$ npx rstest list --json
$ npx rstest list --json=./output.json
您可以使用 --includeSuites 选项,在打印测试用例的同时输出测试套件信息:
$ npx rstest list
# 输出如下:
a.test.ts > test a
a.test.ts > test a > test a-1
a.test.ts > test a-2
b.test.ts > test b
b.test.ts > test b > test b-1
b.test.ts > test b-2
您可以使用 --printLocation 选项来打印测试的位置信息:
$ npx rstest list
# 输出如下:
a.test.ts:4:5 > test a > test a-1
a.test.ts:9:3 > test a-2
b.test.ts:4:5 > test b > test b-1
b.test.ts:9:3 > test b-2
rstest merge-reports
rstest merge-reports 将多个测试分片生成的 blob 报告合并为一个统一的报告。当使用 --shard 在多台 CI 机器上并行运行测试时,这非常有用。
工作流程
- 使用
blob 报告器运行每个分片以生成 blob 报告文件:
# 在 CI 机器 1 上
npx rstest run --shard 1/3 --reporter=blob
# 在 CI 机器 2 上
npx rstest run --shard 2/3 --reporter=blob
# 在 CI 机器 3 上
npx rstest run --shard 3/3 --reporter=blob
- 将所有
.rstest-reports/ 目录收集到同一位置,然后合并:
默认情况下,blob 报告从项目根目录的 .rstest-reports/ 读取。你可以指定自定义路径:
npx rstest merge-reports ./custom-reports-dir
合并命令将:
- 合并所有分片的测试结果
- 使用配置的报告器(如
default、junit)输出合并后的数据
- 合并并生成覆盖率报告(如果启用了覆盖率)
使用 --cleanup 在合并完成后删除 blob 报告目录:
npx rstest merge-reports --cleanup
CLI 选项
Rstest CLI 支持以下常用参数,所有命令均可使用:
布尔选项取反
对于布尔类型的选项,你可以使用 --no-<option> 前缀来将其设置为 false。例如:
# 以下两种写法等价:
npx rstest --isolate false
npx rstest --no-isolate
# 更多示例:
npx rstest --no-coverage # 禁用覆盖率
npx rstest --no-globals # 禁用全局 API
npx rstest --no-clearMocks # 禁用自动清除 mock
CLI 快捷键
在 watch 模式下运行 Rstest 时,你可以使用键盘快捷键来执行各种便捷操作。
所有快捷键:
Shortcuts:
f rerun failed tests
a rerun all tests
u update snapshot
t filter by a test name regex pattern
p filter by a filename regex pattern
q quit process
c clear screen
h show shortcuts help
Note
CLI 快捷键仅在 watch 模式下运行 Rstest(rstest watch 或 rstest --watch)且终端支持 TTY(交互模式)时可用。