Rust Test Desenleri
TDD metodolojisini takip ederek güvenilir, bakım yapılabilir testler yazmak için kapsamlı Rust test desenleri.
Ne Zaman Kullanılır
- Yeni Rust fonksiyonları, metotları veya trait'leri yazma
- Mevcut koda test kapsamı ekleme
- Performans-kritik kod için benchmark'lar oluşturma
- Girdi doğrulama için property-based testler uygulama
- Rust projelerinde TDD iş akışını takip etme
Nasıl Çalışır
- Hedef kodu tanımla — Test edilecek fonksiyon, trait veya modülü bul
- Bir test yaz —
#[cfg(test)]modülünde#[test]kullan, parametreli testler için rstest veya property-based testler için proptest - Bağımlılıkları mock'la — Test altındaki birimi izole etmek için mockall kullan
- Testleri çalıştır (RED) — Testin beklenen hata ile başarısız olduğunu doğrula
- Uygula (GREEN) — Geçmek için minimal kod yaz
- Refactor — Testleri yeşil tutarken iyileştir
- Kapsamı kontrol et — cargo-llvm-cov kullan, 80%+ hedefle
Rust için TDD İş Akışı
RED-GREEN-REFACTOR Döngüsü
Rust'ta Adım-Adım TDD
Unit Testler
Modül Seviyesi Test Organizasyonu
Assertion Makroları
Hata ve Panic Testi
Result Dönüşlerini Test Etme
Panic'leri Test Etme
Entegrasyon Testleri
Dosya Yapısı
Entegrasyon Testleri Yazma
Async Testler
Tokio ile
Test Organizasyon Desenleri
rstest ile Parametreli Testler
Test Yardımcıları
proptest ile Property-Based Testing
Temel Property Testleri
Özel Stratejiler
mockall ile Mock'lama
Trait-Tabanlı Mock'lama
Doc Testleri
Çalıştırılabilir Dokümantasyon
Criterion ile Benchmark'lama
Test Kapsamı
Kapsamı Çalıştırma
Kapsam Hedefleri
Test Komutları
En İyi Uygulamalar
YAPIN:
- ÖNCE testleri yazın (TDD)
- Unit testler için
#[cfg(test)]modülleri kullanın - Implementasyon değil, davranışı test edin
- Senaryoyu açıklayan açıklayıcı test isimleri kullanın
- Daha iyi hata mesajları için
assert!yerineassert_eq!tercih edin - Daha temiz hata çıktısı için
Resultdöndüren testlerde?kullanın - Testleri bağımsız tutun — paylaşılan mutable state yok
YAPMAYIN:
Result::is_err()test edebiliyorsanız#[should_panic]kullanmayın- Her şeyi mock'lamayın — mümkün olduğunda entegrasyon testlerini tercih edin
- Kararsız testleri yok saymayın — düzeltin veya karantinaya alın
- Testlerde
sleep()kullanmayın — channel'lar, barrier'lar veyatokio::time::pause()kullanın - Hata yolu testini atlamayın
CI Entegrasyonu
Unutmayın: Testler dokümantasyondur. Kodunuzun nasıl kullanılması gerektiğini gösterirler. Onları net yazın ve güncel tutun.


