命令列介面
指令
vitest
在目前目錄中啟動 Vitest。將在開發環境中進入監控模式,並在 CI 中自動執行模式。
你可以傳遞一個額外的參數作為要執行的測試檔案的篩選器。例如
vitest foobar
只會執行其路徑中包含 foobar
的測試檔案。這個篩選器只檢查包含,不支援 regexp 或 glob 模式(除非你的終端機在 Vitest 接收篩選器之前就處理它)。
vitest run
執行單次執行,沒有監控模式。
vitest watch
執行所有測試套件,但監控變更,並在變更時重新執行測試。與不帶參數呼叫 vitest
相同。在 CI 中會回退到 vitest run
。
vitest dev
vitest watch
的別名。
vitest related
只執行涵蓋來源檔案清單的測試。適用於靜態匯入(例如,import('./index.js')
或 import index from './index.js
),但不適用於動態匯入(例如,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
只執行 基準 測試,比較效能結果。
選項
選項 | |
---|---|
-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.0 或 true 以監聽所有位址,包括 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 模式(預設:test 或 benchmark ) |
--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.0 或 true 以監聽所有位址,包括 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
部分的測試。例如,若要將您的測試套件分成三部分,請使用以下內容shvitest run --shard=1/3 vitest run --shard=2/3 vitest run --shard=3/3
警告
您無法在啟用 --watch
的情況下使用此選項(預設在開發中啟用)。