irfo
Moderatör
- Katılım
- 7 Ocak 2026
- Mesajlar
- 290
- Tepkime puanı
- 2
- Puanları
- 18
Rust, test yazmayı dilin en temel özelliklerinden biri olarak kabul eder. Diğer dillerin aksine, Rust'ta test yazmak için harici bir kütüphaneye ihtiyacınız yoktur; her şey
Rust testleri iki ana kategoriye ayrılır: Unit Tests (Birim Testleri) ve Integration Tests (Entegrasyon Testleri).
E-Tablolar'a aktar
Rust
cargo test komutuyla kutudan hazır çıkar.Rust testleri iki ana kategoriye ayrılır: Unit Tests (Birim Testleri) ve Integration Tests (Entegrasyon Testleri).
1. Unit Tests (Birim Testleri)
Birim testleri, kodun küçük ve izole parçalarını (genellikle tek bir fonksiyonu) test etmek için kullanılır. Rust geleneğinde bu testler, test edilen kodla aynı dosya içinde bulunur.- Nerede Yazılır? Dosyanın en altında,
#[cfg(test)]ile işaretlenmiş bir modülün içinde. - Gizlilik: Birim testleri,
privatefonksiyonlara erişebilir.
Kod:
fn topla(a: i32, b: i32) -> i32 {
a + b
}
#[cfg(test)] // Sadece 'cargo test' çalıştırıldığında derlenir
mod tests {
use super::*; // Üst kapsamdaki fonksiyonlara erişim sağlar
#[test] // Bu fonksiyonun bir test olduğunu belirtir
fn test_topla() {
assert_eq!(topla(2, 2), 4);
}
}
2. Assertion Makroları
Testlerin sonucunu doğrulamak için üç ana makro kullanılır:assert!(koşul): Koşuluntrueolup olmadığını kontrol eder.assert_eq!(a, b): İki değerin birbirine eşit olup olmadığını kontrol eder.assert_ne!(a, b): İki değerin birbirinden farklı olup olmadığını kontrol eder.
#[should_panic] özniteliğini kullanabilirsiniz.3. Integration Tests (Entegrasyon Testleri)
Entegrasyon testleri, kütüphanenizin dışarıdan bir kullanıcı tarafından nasıl kullanılacağını test eder. Sadecepub (public) olan fonksiyonlara erişebilirler.- Nerede Yazılır? Projenizin kök dizinindeki
tests/klasöründe. - Yapı: Her
.rsdosyası bu klasörde ayrı bir "crate" (paket) olarak derlenir.
Kod:
// tests/entegrasyon_testi.rs
use benim_paketim; // Test edilecek kütüphaneyi içeri aktar
#[test]
fn disaridan_kullanim_testi() {
assert_eq!(benim_paketim::api_fonksiyonu(), 100);
}
4. Testleri Çalıştırma Seçenekleri
cargo test komutu çok esnektir:cargo test: Tüm testleri çalıştırır.cargo test test_adi: Sadece ismi eşleşen testi çalıştırır.cargo test -- --nocapture: Test başarılı olsa bileprintln!çıktılarını ekranda gösterir.cargo test -- --ignored:#[ignore]ile işaretlenmiş (genellikle uzun süren) testleri çalıştırır.
Özet Karşılaştırma
| Özellik | Unit Test | Integration Test |
| Konum | Kaynak dosyanın içi (src/) | tests/ klasörü |
| Özel Erişimi | private öğelere erişebilir | Sadece pub öğelere erişebilir |
| Amaç | Fonksiyonel mantık kontrolü | Modüller arası uyum ve API testi |
| Kapsam | Küçük ve hızlı | Geniş ve kapsamlı |
Belge Testleri (Doc Tests)
Rust'ın en şık özelliklerinden biri, dökümantasyona yazdığınız örnek kodların da test edilmesidir. Kodunuzun kullanım kılavuzundaki örnekler eskirse,cargo test hata vererek sizi uyarır!Rust
Kod:
/// İki sayıyı toplar.
///
/// ```
/// let sonuc = benim_paketim::topla(5, 5);
/// assert_eq!(sonuc, 10);
/// ```
pub fn topla(a: i32, b: i32) -> i32 { a + b }