Parallelismo
Parallelismo dei file
Per impostazione predefinita, Vitest esegue i file di test in parallelo. A seconda del pool
specificato, Vitest utilizza un meccanismo diverso per parallelizzare i file di test:
forks
(il predefinito) evmForks
eseguono i test in diversi processi figli.threads
evmThreads
eseguono i test in diversi thread di lavoro.
Sia i "processi figli" che i "thread di lavoro" sono indicati come "worker". È possibile configurare il numero di worker in esecuzione con le opzioni minWorkers
e maxWorkers
, oppure in modo più dettagliato con la configurazione poolOptions
.
Se si hanno molti test, di solito è più veloce eseguirli in parallelo, ma le prestazioni dipendono anche dal progetto, dall'ambiente e dallo stato di isolamento. Per disabilitare la parallelizzazione dei file, è possibile impostare fileParallelism
su false
. Per saperne di più sui possibili miglioramenti delle prestazioni, consultare la Guida alle prestazioni.
Parallelismo dei test
A differenza dei file di test, Vitest esegue i test in sequenza. Questo significa che i test all'interno di un singolo file di test verranno eseguiti nell'ordine in cui sono stati definiti.
Vitest supporta l'opzione concurrent
per eseguire i test in parallelo. Se questa opzione è impostata, Vitest raggrupperà i test da eseguire in parallelo nello stesso file (il numero di test eseguiti contemporaneamente dipende dall'opzione maxConcurrency
) e li eseguirà con Promise.all
.
Vitest non esegue alcuna analisi intelligente né crea worker aggiuntivi per eseguire questi test. Ciò significa che le prestazioni dei test miglioreranno solo se si fa un uso intensivo di operazioni asincrone. Ad esempio, i seguenti test verranno comunque eseguiti uno dopo l'altro anche se l'opzione concurrent
è specificata, poiché sono sincroni:
test.concurrent('the first test', () => {
expect(1).toBe(1);
});
test.concurrent('the second test', () => {
expect(2).toBe(2);
});
Se si desidera eseguire tutti i test in parallelo, è possibile impostare l'opzione sequence.concurrent
su true
.