跳至內容

命令列介面

指令

vitest

在目前目錄中啟動 Vitest。將在開發環境中進入監控模式,並在 CI 中自動執行模式。

你可以傳遞一個額外的參數作為要執行的測試檔案的篩選器。例如

bash
vitest foobar

只會執行其路徑中包含 foobar 的測試檔案。這個篩選器只檢查包含,不支援 regexp 或 glob 模式(除非你的終端機在 Vitest 接收篩選器之前就處理它)。

vitest run

執行單次執行,沒有監控模式。

vitest watch

執行所有測試套件,但監控變更,並在變更時重新執行測試。與不帶參數呼叫 vitest 相同。在 CI 中會回退到 vitest run

vitest dev

vitest watch 的別名。

只執行涵蓋來源檔案清單的測試。適用於靜態匯入(例如,import('./index.js')import index from './index.js),但不適用於動態匯入(例如,import(filepath))。所有檔案都應與根資料夾相關聯。

lint-staged 或 CI 設定一起執行很有用。

bash
vitest related /src/index.ts /src/hello-world.js

提示

別忘了 Vitest 預設啟用監控模式。如果你正在使用像 lint-staged 這樣的工具,你也應該傳遞 --run 選項,這樣命令才能正常結束。

js
// .lintstagedrc.js
export default {
  '*.{js,ts}': 'vitest related --run',
}

vitest bench

只執行 基準 測試,比較效能結果。

選項

選項
-r, --root <path>根路徑
-c, --config <path>設定檔路徑
-u, --update更新快照
-w, --watch啟用監控模式
-t, --testNamePattern <pattern>執行與指定 regexp 模式相符的完整名稱的測試
--dir <path>掃描測試檔案的基本目錄
--ui啟用 UI
--open自動開啟 UI(預設:!process.env.CI
--api.port [port]指定伺服器埠。請注意,如果埠已被使用,Vite 會自動嘗試下一個可用的埠,因此這可能不是伺服器最終監聽的實際埠。如果為 true,將設定為 51204
--api.host [host]指定伺服器應監聽的 IP 位址。將其設定為 0.0.0.0true 以監聽所有位址,包括 LAN 和公用位址
--api.strictPort設定為 true 以在埠已使用時結束,而不是自動嘗試下一個可用的埠
--silent測試的靜默主控台輸出
--hideSkippedTests隱藏略過測試的記錄
--reporter <name>指定報告員
--outputFile <filename/-s>當也指定支援報告員時,將測試結果寫入檔案,使用 cac 的點數表示法來表示多個報告員的個別輸出(範例:--outputFile.tap=./tap.txt)
--coverage.all是否將所有檔案,包括未測試的檔案,納入報告
--coverage.provider <name>選擇用於收集覆蓋率的工具,可用的值有:「v8」、「istanbul」和「custom」
--coverage.enabled啟用覆蓋率收集。可以使用 --coverage CLI 選項覆寫(預設:false
--coverage.include <pattern>作為 glob 模式包含在覆蓋率中的檔案。使用多個模式時,可以指定多次(預設:**
--coverage.exclude <pattern>要從覆蓋率中排除的檔案。使用多個擴充功能時,可以指定多次(預設:請參閱 coverage.exclude
--coverage.extension <extension>要包含在覆蓋率中的擴充功能。使用多個擴充功能時,可以指定多次(預設:[".js", ".cjs", ".mjs", ".ts", ".mts", ".cts", ".tsx", ".jsx", ".vue", ".svelte"]
--coverage.clean在執行測試之前清除覆蓋率結果(預設:true)
--coverage.cleanOnRerun在監控重新執行時清除覆蓋率報告(預設:true)
--coverage.reportsDirectory <path>寫入覆蓋率報告的目錄(預設:./coverage)
--coverage.reporter <name>要使用的覆蓋率報告員。請參閱 coverage.reporter 以取得更多資訊(預設:["text", "html", "clover", "json"]
--coverage.reportOnFailure即使測試失敗,也會產生覆蓋率報告(預設:false
--coverage.allowExternal收集專案根目錄以外的檔案覆蓋率(預設:false
--coverage.skipFull不要顯示 100% 陳述式、分支和函式覆蓋率的檔案(預設:false
--coverage.thresholds.100將所有覆蓋率閾值設定為 100 的捷徑(預設:false
--coverage.thresholds.perFile檢查每個檔案的閾值。請參閱 --coverage.thresholds.lines--coverage.thresholds.functions--coverage.thresholds.branches--coverage.thresholds.statements 以取得實際閾值(預設:false
--coverage.thresholds.autoUpdate當目前的覆蓋率高於設定的閾值時,更新閾值:`lines`、`functions`、`branches` 和 `statements`(預設:false
--coverage.thresholds.lines <number>行的閾值。請參閱 istanbuljs 以取得更多資訊。此選項不適用於自訂提供者
--coverage.thresholds.functions <number>函式的閾值。請參閱 istanbuljs 以取得更多資訊。此選項不適用於自訂提供者
--coverage.thresholds.branches <number>分支的閾值。請參閱 istanbuljs 以取得更多資訊。此選項不適用於自訂提供者
--coverage.thresholds.statements <number>陳述式的閾值。請參閱 istanbuljs 以取得更多資訊。此選項不適用於自訂提供者
--coverage.ignoreClassMethods <name>要忽略覆蓋率的類別方法名稱陣列。請參閱 istanbuljs 以取得更多資訊。此選項僅適用於 istanbul 提供者(預設:[]
--coverage.processingConcurrency <number>處理覆蓋率結果時使用的並行限制。(預設為 20 和 CPU 數量之間的最小值)
--coverage.customProviderModule <path>指定自訂覆蓋率提供者模組的模組名稱或路徑。請參閱 自訂覆蓋率提供者 以取得更多資訊。此選項僅適用於自訂提供者
--coverage.watermarks.statements <watermarks>格式為 <high>,<low> 的陳述的高水位和低水位
--coverage.watermarks.lines <watermarks>格式為 <high>,<low> 的行的高水位和低水位
--coverage.watermarks.branches <watermarks>格式為 <high>,<low> 的分支的高水位和低水位
--coverage.watermarks.functions <watermarks>格式為 <high>,<low> 的函數的高水位和低水位
--mode <name>覆寫 Vite 模式(預設:testbenchmark
--workspace <path>工作區設定檔的路徑
--isolate個別執行每個測試檔案。若要停用個別執行,請使用 --no-isolate(預設:true
--globals全域注入 API
--dom使用 happy-dom 模擬瀏覽器 API
--browser.enabled在瀏覽器中執行測試。等同於 --browser.enabled(預設:false
--browser.name <name>在特定瀏覽器中執行所有測試。有些瀏覽器僅適用於特定提供者(請參閱 --browser.provider)。請參閱 browser.name 以取得更多資訊
--browser.headless在無頭模式下執行瀏覽器(即不開啟 GUI(圖形使用者介面))。如果您在 CI 中執行 Vitest,它將預設啟用(預設:process.env.CI
--browser.api.port [port]指定伺服器埠。請注意,如果埠已被使用,Vite 將自動嘗試下一個可用的埠,因此這可能不是伺服器最終偵聽的實際埠。如果為 true,將設定為 63315
--browser.api.host [host]指定伺服器應監聽的 IP 位址。將其設定為 0.0.0.0true 以監聽所有位址,包括 LAN 和公用位址
--browser.api.strictPort設定為 true 以在埠已使用時結束,而不是自動嘗試下一個可用的埠
--browser.provider <name>用於執行瀏覽器測試的提供者。有些瀏覽器僅適用於特定提供者。可以是「webdriverio」、「playwright」或自訂提供者的路徑。請參閱 browser.provider 以取得更多資訊(預設:"webdriverio"
--browser.providerOptions <options>傳遞至瀏覽器提供者的選項。請參閱 browser.providerOptions 以取得更多資訊
--browser.slowHijackESM讓 Vitest 在瀏覽器上使用自己的模組解析度,以啟用 vi.mock 和 vi.spyOn 等 API。請參閱 browser.slowHijackESM 以取得更多資訊(預設值:false
--browser.isolate獨立執行每個瀏覽器測試檔案。若要停用獨立執行,請使用 --browser.isolate=false(預設值:true
--browser.fileParallelism是否要並行執行所有測試檔案。使用 --browser.file-parallelism=false 停用(預設值:與 --file-parallelism 相同)
--pool <pool>如果未在瀏覽器中執行,請指定池(預設值:threads
--poolOptions.threads.isolate在執行緒池中獨立執行測試(預設值:true
--poolOptions.threads.singleThread在單一執行緒中執行測試(預設值:false
--poolOptions.threads.maxThreads <workers>執行測試時執行緒的最大數量
--poolOptions.threads.minThreads <workers>執行測試時執行緒的最小數量
--poolOptions.threads.useAtomics使用 Atomics 同步執行緒。在某些情況下,這可以提升效能,但可能會導致較舊的 Node 版本發生區段錯誤(預設值:false
--poolOptions.vmThreads.isolate在執行緒池中獨立執行測試(預設值:true
--poolOptions.vmThreads.singleThread在單一執行緒中執行測試(預設值:false
--poolOptions.vmThreads.maxThreads <workers>執行測試時執行緒的最大數量
--poolOptions.vmThreads.minThreads <workers>執行測試時執行緒的最小數量
--poolOptions.vmThreads.useAtomics使用 Atomics 同步執行緒。在某些情況下,這可以提升效能,但可能會導致較舊的 Node 版本發生區段錯誤(預設值:false
--poolOptions.vmThreads.memoryLimit <limit>VM 執行緒池的記憶體限制。如果您看到記憶體外洩,請嘗試調整此值。
--poolOptions.forks.isolate在分岔池中獨立執行測試(預設值:true
--poolOptions.forks.singleFork在單一 child_process 中執行測試(預設值:false
--poolOptions.forks.maxForks <workers>執行測試時程序的最大數量
--poolOptions.forks.minForks <workers>執行測試時程序的最小數量
--poolOptions.vmForks.isolate在分岔池中獨立執行測試(預設值:true
--poolOptions.vmForks.singleFork在單一 child_process 中執行測試(預設值:false
--poolOptions.vmForks.maxForks <workers>執行測試時程序的最大數量
--poolOptions.vmForks.minForks <workers>執行測試時程序的最小數量
--poolOptions.vmForks.memoryLimit <limit>VM 分岔池的記憶體限制。如果您看到記憶體外洩,請嘗試調整此值。
--fileParallelism是否要並行執行所有測試檔案。使用 --no-file-parallelism 來停用(預設值:true
--maxWorkers <workers>執行測試時工作執行緒的最大數量
--minWorkers <workers>執行測試時工作執行緒的最小數量
--environment <name>指定執行器環境,如果未在瀏覽器中執行(預設值:node
--passWithNoTests在找不到任何測試時通過
--logHeapUsage在 node 中執行時顯示每個測試的堆大小
--allowOnly允許標記為 only 的測試和套件(預設值:!process.env.CI
--dangerouslyIgnoreUnhandledErrors忽略發生的任何未處理錯誤
--shard <shards><index>/<count> 格式執行的測試套件分片
--changed [since]執行受變更檔案影響的測試(預設值:false
--sequence.shuffle.files以隨機順序執行檔案。如果您啟用此選項,執行時間長的測試不會提早開始。(預設值:false
--sequence.shuffle.tests以隨機順序執行測試(預設值:false
--sequence.concurrent讓測試並行執行(預設值:false
--sequence.seed <seed>設定隨機化種子。如果 --sequence.shuffle 為 false,此選項將不會生效。請參閱 「隨機種子」頁面 以取得更多資訊
--sequence.hooks <order>變更執行掛鉤的順序。可接受的值為:"stack""list""parallel"。請參閱 sequence.hooks 以取得更多資訊(預設值:"parallel"
--sequence.setupFiles <order>變更執行設定檔案的順序。可接受的值為:"list""parallel"。如果設定為 "list",將按定義順序執行設定檔案。如果設定為 "parallel",將並行執行設定檔案(預設值:"parallel"
--inspect [[host:]port]啟用 Node.js 檢查器(預設值:127.0.0.1:9229
--inspectBrk [[host:]port]啟用 Node.js 檢查器,並在測試開始前中斷
--testTimeout <timeout>測試的預設逾時時間(毫秒)(預設值:5000
--hookTimeout <timeout>預設掛鉤逾時時間(毫秒)(預設值:10000
--bail <number>在給定的測試數量失敗時停止測試執行(預設值:0
--retry <times>如果測試失敗,則重試特定次數(預設值:0
--diff <路徑>用於產生 diff 介面的 diff 設定檔路徑
--exclude <glob>要從測試中排除的其他檔案 glob
--expandSnapshotDiff當快照失敗時顯示完整 diff
--disableConsoleIntercept停用自動攔截主控台記錄 (預設:false)
--typecheck.enabled在測試時啟用類型檢查 (預設:false)
--typecheck.only只執行類型檢查測試。這會自動啟用類型檢查 (預設:false)
--typecheck.checker <名稱>指定要使用的類型檢查器。可用值為:「tcs」和「vue-tsc」以及可執行檔路徑 (預設:"tsc")
--typecheck.allowJs允許類型檢查 JavaScript 檔案。預設採用 tsconfig.json 中的值
--typecheck.ignoreSourceErrors忽略來自原始檔的類型錯誤
--typecheck.tsconfig <路徑>自訂 tsconfig 檔案路徑
--project <名稱>如果你正在使用 Vitest 工作空間功能,要執行的專案名稱。這可以重複使用於多個專案:--project=1 --project=2。你也可以使用萬用字元過濾專案,例如 --project=packages*
--slowTestThreshold <閾值>將測試視為慢速的毫秒閾值 (預設:300)
--teardownTimeout <逾時>清除函式的預設逾時時間,單位為毫秒 (預設:10000)
--maxConcurrency <數字>套件中同時執行的最大測試數 (預設:5)
--run停用監控模式
--segfaultRetry <次數>如果測試套件因段落錯誤而崩潰,則重試 (預設:true)
--no-color從主控台輸出中移除顏色
--clearScreen在監控模式中重新執行測試時清除終端機畫面 (預設:true)
--standalone在不執行測試的情況下啟動 Vitest。檔案篩選器將被忽略,測試將只在變更時執行 (預設:false)

提示

Vitest 支援 CLI 參數的駝峰式大小寫和連字號大小寫。例如,--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

已變更

  • 類型布林 | 字串

  • 預設值:false

    僅針對已變更的檔案執行測試。如果未提供值,它將針對未提交的變更執行測試(包括已暫存和未暫存的變更)。

    若要針對上次提交所做的變更執行測試,您可以使用 --changed HEAD~1。您也可以傳遞提交雜湊(例如 --changed 09a9920)或分支名稱(例如 --changed origin/develop)。

    與程式碼覆蓋率一起使用時,報告將僅包含與變更相關的檔案。

    如果與 forceRerunTriggers 設定檔選項配對,如果 forceRerunTriggers 清單中列出的檔案至少有一個變更,它將執行整個測試套件。預設情況下,對 Vitest 設定檔檔案和 package.json 的變更將始終重新執行整個套件。

分片

  • 類型字串

  • 預設值:已停用

    測試套件分片以 <index>/<count> 格式執行,其中

    • count 是正整數,已分割部分的數量
    • index 是正整數,已分割部分的索引

    此命令將把所有測試分為 count 個相等的部分,並且只會執行那些碰巧位於 index 部分的測試。例如,若要將您的測試套件分成三部分,請使用以下內容

    sh
    vitest run --shard=1/3
    vitest run --shard=2/3
    vitest run --shard=3/3

警告

您無法在啟用 --watch 的情況下使用此選項(預設在開發中啟用)。