Skip to content
Vitest 2
Main Navigation ÚtmutatóAPIKonfigurációBöngésző módHaladó
2.1.9
1.6.1
0.34.6

magyar

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština

magyar

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština

Megjelenés

Sidebar Navigation

Miért a Vitest?

Első lépések

Funkciók

Munkaterület

Parancssori felület

Tesztszűrés

Reporterek

Lefedettség

Pillanatképek

Mockolás

Típusok tesztelése

Vitest UI

Forráskódba épített tesztelés

Tesztkörnyezet

Tesztkörnyezet

Egyezésvizsgálók kiterjesztése

IDE integrációk

Hibakeresés

Összehasonlítás más tesztfuttatókkal

Migrálási útmutató

Gyakori hibák

Profiling Test Performance

A teljesítmény javítása

Ezen az oldalon

Teljesítmény javítása ​

Teszt izoláció ​

Alapértelmezetten a Vitest minden tesztfájlt egy izolált környezetben futtatja, a pool beállítása alapján:

  • A threads pool minden tesztfájlt külön Worker szálban futtat.
  • A forks pool minden tesztfájlt külön forkolt gyermekfolyamatban futtat.
  • A vmThreads pool minden tesztfájlt külön VM kontextusban futtat, de a párhuzamosság érdekében munkafolyamatokat használ.

Ez jelentősen megnövelheti a tesztidőket, ami nem kívánatos olyan projektek esetén, amelyek nem támaszkodnak mellékhatásokra és helyesen kezelik/tisztítják állapotukat (ami általában igaz a node környezetben futó projektekre). Ebben az esetben az izoláció letiltása javítja a tesztek sebességét. Ehhez megadhatja a --no-isolate kapcsolót a CLI-nek, vagy beállíthatja a test.isolate tulajdonságot a konfigurációban false értékre. Ha több poolt használ egyszerre a poolMatchGlobs segítségével, akkor az izolációt egy adott használt pool esetében is kikapcsolhatja.

bash
vitest --no-isolate
ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    isolate: false,
    // az izolációt csak bizonyos pooloknál is kikapcsolhatja
    poolOptions: {
      forks: {
        isolate: false,
      },
    },
  },
});

TIP

Ha a vmThreads poolt használja, nem kapcsolhatja ki az izolációt. Használja helyette a threads poolt a tesztek teljesítményének javításához.

Egyes projektek esetén hasznos lehet a párhuzamosság kikapcsolása is az indítási idő javítása érdekében. Ehhez adja meg a --no-file-parallelism kapcsolót a CLI-nek, vagy állítsa be a test.fileParallelism tulajdonságot a konfigurációban false értékre.

bash
vitest --no-file-parallelism
ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    fileParallelism: false,
  },
});

Pool ​

Alapértelmezetten a Vitest a teszteket a pool: 'forks' beállítással futtatja. Bár a 'forks' pool jobb a kompatibilitási problémák (lefagyott folyamatok hanging process és segfaultok) kezelésére, nagyobb projektekben kissé lassabb lehet, mint a pool: 'threads'.

Megpróbálhatja javítani a teszt futási idejét a pool opció átkapcsolásával a konfigurációban:

bash
vitest --pool=threads
ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    pool: 'threads',
  },
});

Sharding ​

A teszt sharding azt jelenti, hogy egyszerre a tesztesetek egy kis részhalmazát futtatjuk. Ez hasznos lehet, ha több gép áll rendelkezésre a tesztek egyidejű futtatásához.

A Vitest tesztek több különböző futtatásra való felosztásához használja a --shard opciót a --reporter=blob opcióval együtt:

sh
vitest run --reporter=blob --shard=1/3 # 1. gép
vitest run --reporter=blob --shard=2/3 # 2. gép
vitest run --reporter=blob --shard=3/3 # 3. gép

Gyűjtse össze minden gépről az .vitest-reports könyvtárban tárolt eredményeket, és egyesítse őket a --merge-reports opcióval:

sh
vitest --merge-reports
Github action példa

Ez a beállítás a https://github.com/vitest-tests/test-sharding oldalon is megtalálható.

yaml
# A https://playwright.dev/docs/test-sharding alapján
name: Tests
on:
  push:
    branches:
      - main
jobs:
  tests:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        shardIndex: [1, 2, 3, 4]
        shardTotal: [4]
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20

      - name: Install pnpm
        uses: pnpm/action-setup@v4

      - name: Install dependencies
        run: pnpm i

      - name: Run tests
        run: pnpm run test --reporter=blob --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }}

      - name: Upload blob report to GitHub Actions Artifacts
        if: ${{ !cancelled() }}
        uses: actions/upload-artifact@v4
        with:
          name: blob-report-${{ matrix.shardIndex }}
          path: .vitest-reports/*
          include-hidden-files: true
          retention-days: 1

  merge-reports:
    if: ${{ !cancelled() }}
    needs: [tests]

    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20

      - name: Install pnpm
        uses: pnpm/action-setup@v4

      - name: Install dependencies
        run: pnpm i

      - name: Download blob reports from GitHub Actions Artifacts
        uses: actions/download-artifact@v4
        with:
          path: .vitest-reports
          pattern: blob-report-*
          merge-multiple: true

      - name: Merge reports
        run: npx vitest --merge-reports

TIP

A teszt sharding hasznos lehet nagy CPU-számú gépeken is.

A Vitest csak egyetlen Vite szervert futtat a fő szálában. A többi szál a tesztfájlok futtatására szolgál. Nagy CPU-számú gépen a fő szál szűk keresztmetszetté válhat, mivel nem tudja kezelni a szálakból érkező összes kérést. Például egy 32 CPU-s gépen a fő szál felelős a 31 teszt szálból érkező terhelés kezeléséért.

A fő szál Vite szerverének terhelését csökkentheti a teszt sharding használatával. A terhelés több Vite szerverre is elosztható.

sh
# Példa tesztek szétosztására 32 CPU-n 4 részre (shards).
# Mivel minden folyamatnak szüksége van 1 fő szálra, 7 szál áll rendelkezésre a tesztfuttatóknak (1+7)*4 = 32
# A futtató környezettől (pool) függően használd a VITEST_MAX_THREADS vagy a VITEST_MAX_FORKS változót:
VITEST_MAX_THREADS=7 vitest run --reporter=blob --shard=1/4 & \
VITEST_MAX_THREADS=7 vitest run --reporter=blob --shard=2/4 & \
VITEST_MAX_THREADS=7 vitest run --reporter=blob --shard=3/4 & \
VITEST_MAX_THREADS=7 vitest run --reporter=blob --shard=4/4 & \
wait # https://man7.org/linux/man-pages/man2/waitpid.2.html

vitest --merge-reports
Pager
Előző oldalProfiling Test Performance

A MIT licenc alapján kiadva.

Copyright (c) 2024 Mithril Contributors

https://v2.vitest.dev/guide/improving-performance

A MIT licenc alapján kiadva.

Copyright (c) 2024 Mithril Contributors