Paralellik
Dosya Paralelliği
Varsayılan olarak, Vitest test dosyalarını paralel olarak çalıştırır. Belirtilen pool seçeneğine bağlı olarak, Vitest test dosyalarını paralelleştirmek için farklı mekanizmalar kullanır:
forks(varsayılan) vevmForkshavuzları, testleri farklı çocuk süreçlerde çalıştırır.threadsvevmThreadshavuzları, testleri farklı iş parçacıklarında çalıştırır.
Hem "çocuk süreçler" hem de "iş parçacıkları" genel olarak "çalışanlar" olarak adlandırılır. Çalışan sayısını minWorkers ve maxWorkers seçenekleriyle veya daha ayrıntılı olarak poolOptions yapılandırması aracılığıyla yapılandırabilirsiniz.
Çok sayıda testiniz varsa, bunları paralel çalıştırmak genellikle daha hızlıdır. Ancak bu durum, projenize, ortamınıza ve izolasyon durumuna da bağlıdır. Dosya paralelleştirmeyi devre dışı bırakmak için fileParallelism seçeneğini false olarak ayarlayabilirsiniz. Olası performans iyileştirmeleri hakkında daha fazla bilgi edinmek için Performans Rehberi bölümünü okuyun.
Test Paralelliği
Test dosyalarının aksine, Vitest bir dosya içindeki testleri sırasıyla çalıştırır. Bu, tek bir test dosyasındaki testlerin tanımlandıkları sırayla yürütüleceği anlamına gelir.
Vitest, testleri eşzamanlı çalıştırmak için concurrent seçeneğini destekler. Bu seçenek ayarlanırsa, Vitest aynı dosyadaki eşzamanlı testleri gruplandırır (eşzamanlı çalışan test sayısı maxConcurrency seçeneğine bağlıdır) ve bunları Promise.all ile çalıştırır.
Vitest herhangi bir akıllı analiz yapmaz ve bu testleri çalıştırmak için ek çalışanlar oluşturmaz. Bu, testlerinizin performansının yalnızca eşzamansız işlemlere yoğun bir şekilde bağımlıysanız artacağı anlamına gelir. Örneğin, concurrent seçeneği belirtilmiş olsa bile aşağıdaki testler yine de birbiri ardına çalışacaktır. Bunun nedeni senkron olmalarıdır:
test.concurrent('the first test', () => {
expect(1).toBe(1);
});
test.concurrent('the second test', () => {
expect(2).toBe(2);
});Tüm testleri eşzamanlı olarak çalıştırmak isterseniz, sequence.concurrent seçeneğini true olarak ayarlayabilirsiniz.