Párhuzamos végrehajtás
Fájl szintű párhuzamos végrehajtás
Alapértelmezetten a Vitest a tesztfájlokat párhuzamosan futtatja. A megadott pool
konfiguráció alapján a Vitest különböző mechanizmusokat alkalmaz a tesztfájlok párhuzamosítására:
- A
forks
(alapértelmezett) és avmForks
opciók külön gyermekfolyamatokban futtatják a teszteket. - A
threads
és avmThreads
opciók külön munkaszálakban futtatják a teszteket.
Mind a "gyermekfolyamatokra", mind a "munkaszálakra" "worker"-ként hivatkozunk. A futó workerek számát a minWorkers
és maxWorkers
opciókkal, vagy részletesebben a poolOptions
konfigurációval állíthatja be.
Sok teszt esetén általában gyorsabb a párhuzamos futtatás, de ez függ a projekttől, a környezettől és az izoláció állapotától is. A fájl szintű párhuzamosítás kikapcsolásához állítsa a fileParallelism
opciót false
értékre. A lehetséges teljesítményjavításokról bővebben a Teljesítmény útmutatóban olvashat.
Teszt szintű párhuzamosság
A tesztfájlokkal ellentétben a Vitest a teszteket egy tesztfájlon belül sorrendben futtatja. Ez azt jelenti, hogy egy tesztfájlban a tesztek abban a sorrendben futnak le, ahogyan definiálták őket.
A Vitest támogatja a concurrent
opciót a tesztek párhuzamos futtatásához. Ha ez az opció be van állítva, a Vitest az azonos fájlban lévő konkurens teszteket (az egyidejűleg futó tesztek száma a maxConcurrency
opciótól függően) a Promise.all
segítségével futtatja.
A Vitest nem végez intelligens elemzést, és nem hoz létre további workereket ezen tesztek futtatásához. Ez azt jelenti, hogy a tesztek teljesítménye csak akkor javul, ha nagymértékben függ aszinkron műveletektől. Például az alábbi tesztek továbbra is egymás után fognak futni, annak ellenére, hogy a concurrent
opció be van állítva. Ez azért van, mert szinkron futásúak:
test.concurrent('the first test', () => {
expect(1).toBe(1);
});
test.concurrent('the second test', () => {
expect(2).toBe(2);
});
Ha az összes tesztet párhuzamosan szeretné futtatni, beállíthatja a sequence.concurrent
opciót true
értékre.