2015-06-04 28 views
11

Veritabanı ile çalışmak için bütünleştirme testleri yazıyorum. Her bir testin başlangıcında, depolama alanını temizlerim ve bazı veriler oluşturur.Yerleşik entegrasyon testleri eşzamanlı mı, sıralı mı çalışıyor?

Testlerimin boş bir veritabanıyla çalıştığımı doğrulamak için sırayla çalışmasını istiyorum. Ancak, tümleştirme sınamaları aynı anda çalıştırılıyor gibi görünüyor, çünkü bazen veritabanını temizledikten sonra varolan belgeleri alıyorum.

Veritabanını kontrol ettim ve her bir test için bir gecikme eklediğimde (std::thread::sleep_ms(10000) ile) farklı testlerde oluşturulan belgelerin yaklaşık aynı oluşturma süresine sahip olduğunu gördüm.

Tümleştirme sınamalarının nasıl çalıştırıldığını açıklayabilir misiniz ve bunları sırayla çalıştırmak mümkün mü?

cevap

14

Yerleşik sınama çerçevesi, varsayılan olarak aynı anda çalışır. Test için yararlı ancak basit bir destek sunacak şekilde tasarlanmıştır, birçok ihtiyacı karşılar ve/ her testte diğerlerinden bağımsız olarak test edilmelidir. (Bağımsız olmaları, paralel olarak çalıştırılabildikleri anlamına gelir.) ortam değişkenini, örn. RUST_TEST_THREADS=1 cargo test, testleri tek bir iş parçacığında yürütür. Ancak, bu işlevselliklerinizi her zaman için isterseniz, #[test] veya en azından doğrudan kullanmayla ilgilenebilirsiniz. , cargo test derlemek ve bir şekilde tests/foo.rs çalışacağı ile

[[test]] 
name = "foo" 
harness = false 

:

en esnek yolu Cargo.toml aşağıdaki gibi bir şey aracılığıyla, tamamen kendi çerçeve tanımlamak testler için cargo 'ın desteğiyle yoluyladır ikili. Bu, işlemlerin uygun şekilde sıralanmasını/sıfırlanmasını sağlayabilir.

Alternatif olarak, belki de stainless gibi bir çerçeve ihtiyaç duyduğunuz işlevselliğe sahiptir. (Ben kullanmadım bu yüzden emin değilim.)

İlgili konular