Skip to content
Vitest 3
Main Navigation Kılavuz & APIYapılandırmaTarayıcı ModuGelişmiş API
3.2.0
2.1.9
1.6.1
0.34.6

Türkçe

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

Türkçe

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

Görünüm

Sidebar Navigation

Giriş

Neden Vitest

Başlarken

Özellikler

Vitest'i Yapılandırma

API

Test API Referansları

Mock Fonksiyonlar

Vi

expect

expectTypeOf

assert

assertType

Kılavuz

Komut Satırı Arayüzü

Test Filtreleme

Test Projeleri

Raporlayıcılar

Kapsam

Anlık Görüntüler

Mocking

Paralellik

Tür Testleri

Vitest UI

Kaynak İçi Test

Test Ortamı

Test Açıklamaları

Test Ortamı

Eşleştiricileri Genişletme

IDE Entegrasyonları

Hata Ayıklama

Sık Karşılaşılan Hatalar

Geçiş Kılavuzu

Vitest 3.0'a Geçiş

Jest'ten Geçiş

Performans

Test Performansını Profillendirme

Performansı İyileştirme

Tarayıcı Modu

Gelişmiş API

Diğer Test Çalıştırıcılarla Karşılaştırmalar

Bu sayfada

Performansı İyileştirme ​

Test İzolasyonu ​

Varsayılan olarak Vitest, her test dosyasını havuz tabanlı izole edilmiş bir ortamda çalıştırır:

  • threads havuzu her test dosyasını ayrı bir Worker içinde çalıştırır.
  • forks havuzu her test dosyasını ayrı bir forked alt süreç içinde çalıştırır.
  • vmThreads havuzu her test dosyasını ayrı bir VM bağlamı içinde çalıştırır, ancak paralellik için işçileri kullanır.

Bu durum, test sürelerini önemli ölçüde artırabilir ve yan etkilere dayanmayan, durumlarını düzgün şekilde temizleyen projeler için (genellikle node ortamına sahip projelerde olduğu gibi) istenmeyen bir durum olabilir. Bu gibi durumlarda, izolasyonu devre dışı bırakmak testlerinizin hızını artıracaktır. Bunu yapmak için CLI'ye --no-isolate bayrağını sağlayabilir veya yapılandırmadaki test.isolate özelliğini false olarak ayarlayabilirsiniz.

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

export default defineConfig({
  test: {
    isolate: false,
    // İzolasyonu sadece belirli havuzlar için de devre dışı bırakabilirsiniz
    poolOptions: {
      forks: {
        isolate: false,
      },
    },
  },
});

TIP

vmThreads havuzunu kullanıyorsanız, izolasyonu devre dışı bırakamazsınız. Testlerinizin performansını artırmak için bunun yerine threads havuzunu kullanın.

Bazı projeler için, başlangıç süresini kısaltmak amacıyla dosya paralelliğini devre dışı bırakmak da istenebilir. Bunu yapmak için CLI'ye --no-file-parallelism bayrağını sağlayın veya yapılandırmadaki test.fileParallelism özelliğini false olarak ayarlayın.

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

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

Havuz Seçimi ​

Varsayılan olarak Vitest, testleri pool: 'forks' içinde çalıştırır. 'forks' havuzu uyumluluk sorunları açısından daha iyi olsa da (donan süreç ve segfault'lar), büyük projelerde pool: 'threads''ten biraz daha yavaş olabilir.

Yapılandırmadaki pool seçeneğini değiştirerek test çalışma süresini iyileştirmeyi deneyebilirsiniz:

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

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

Parçalama (Sharding) ​

Test parçalama, test suite'inizin gruplara veya parçalara bölünmesi işlemidir. Bu, büyük bir test paketiniz varsa ve bu paketin alt kümelerini eş zamanlı olarak çalıştırabilecek birden fazla makineniz varsa faydalı olabilir.

Vitest testlerini birden fazla farklı çalıştırmaya bölmek için --shard seçeneğini --reporter=blob seçeneğiyle birlikte kullanın:

sh
vitest run --reporter=blob --shard=1/3 # 1. makine
vitest run --reporter=blob --shard=2/3 # 2. makine
vitest run --reporter=blob --shard=3/3 # 3. makine

Vitest test durumlarınızı değil, test dosyalarınızı parçalara böler. Eğer 1000 test dosyanız varsa, --shard=1/4 seçeneği, her bir dosyanın kaç test durumu içerdiğine bakılmaksızın 250 test dosyasını çalıştıracaktır.

Her bir makineden .vitest-reports dizininde kaydedilen sonuçları toplayıp bunları --merge-reports seçeneğiyle birleştirin:

sh
vitest run --merge-reports
Github eylem örneği

Bu kurulum aynı zamanda https://github.com/vitest-tests/test-sharding adresinde de kullanılmaktadır.

yaml
# https://playwright.dev/docs/test-sharding adresinden esinlenilmiştir
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@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0

      - 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@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0

      - 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

Test parçalama, yüksek CPU sayısına sahip makinelerde de yararlı olabilir.

Vitest, ana iş parçacığında yalnızca tek bir Vite sunucusu çalıştırır. Diğer iş parçacıkları test dosyalarını çalıştırmak için kullanılır. Yüksek CPU sayısına sahip bir makinede, ana iş parçacığı, iş parçacıklarından gelen tüm istekleri işleyemediğinden bir darboğaz haline gelebilir. Örneğin, 32 CPU'lu bir makinede ana iş parçacığı, 31 test iş parçacığından gelen yükü yönetmekten sorumludur.

Ana iş parçacığının Vite sunucusundaki yükü azaltmak için test parçalama kullanabilirsiniz. Yük, birden fazla Vite sunucusuna dağıtılabilir.

sh
# 32 CPU'lu bir makinede testleri 4 parçaya bölme örneği.
# Her işlem 1 ana iş parçacığı gerektirdiğinden, test çalıştırıcıları için 7 iş parçacığı kullanılır (1+7)*4 = 32
# Havuza bağlı olarak VITEST_MAX_THREADS veya VITEST_MAX_FORKS kullanın:
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 run --merge-reports
Pager
Önceki sayfaTest Performansını Profillendirme
Sonraki sayfaTarayıcı Modu

MIT Lisansı altında yayınlanmıştır.

Copyright (c) 2021-Present Vitest Team

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

MIT Lisansı altında yayınlanmıştır.

Copyright (c) 2021-Present Vitest Team