Integration test
- Rust kursu
- Orta seviye
- Ders 85/115
- 4 dk
tests/ klasörüyle integration test yazar.
Integration test
Integration testleri, kütüphaneyi bir kullanıcı gibi, yalnızca genel (pub) API üzerinden dener. Proje kökündeki tests/ klasöründe dururlar ve her dosya ayrı bir crate olarak derlenir:
istatistik/
├── Cargo.toml
├── src/lib.rs // pub fn ortalama(..)
└── tests/
└── hesaplar.rs
// tests/hesaplar.rs
use istatistik::ortalama;
#[test]
fn ortalama_dogru() {
assert_eq!(ortalama(&[2.0, 4.0]), 3.0);
}#[cfg(test)] gerekmez; tests/ klasörü zaten yalnızca cargo test'te derlenir.
Ortak test yardımcıları
Birden çok test dosyasının kullandığı kurulum kodu tests/ortak/mod.rs içine konur; tests/ortak.rs yazılırsa kendisi de bir test dosyası sayılırdı:
// tests/ortak/mod.rs
pub fn ornek_veri() -> Vec<f64> { vec![2.0, 4.0, 9.0] }
// tests/hesaplar.rs
mod ortak;
#[test]
fn uc_degerin_ortalamasi() {
let v = ortak::ornek_veri();
assert_eq!(istatistik::ortalama(&v), 5.0);
}Uygulama Dışarıdan dene
Kütüphaneyi mod istatistik ile taklit et ve içine pub fn ortalama(v: &[f64]) -> f64 yaz. main'de yalnızca genel API ile assert_eq!(istatistik::ortalama(&[2.0, 4.0]), 3.0) denetimini yap ve ortalama: 3 yazdır.
Başlangıç kodu
fn main() {
// buraya yaz
}Örnek çözüm
mod istatistik {
pub fn ortalama(v: &[f64]) -> f64 {
v.iter().sum::<f64>() / v.len() as f64
}
}
fn main() {
let o = istatistik::ortalama(&[2.0, 4.0]);
assert_eq!(o, 3.0);
println!("ortalama: {}", o);
}Beklenen çıktı
ortalama: 3
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Yalnızca <code>src/main.rs</code> olan (kütüphanesiz) bir paket için integration test yazılabilir mi?
- Evet, use main;
- Evet, otomatik
- Yalnızca unit testler gerekir
- Doğrudan hayır; binary crate'ler içe aktarılamaz, mantığı lib.rs'e taşımak gerekir Doğru cevap
Açıklama: Bu, ince bir main.rs ile mantığı lib.rs'te tutma alışkanlığının bir başka nedenidir.
2 Genel API'yi al
// tests/hesaplar.rs
____ istatistik::ortalama;
// tests/hesaplar.rs
use istatistik::ortalama;
Açıklama: Integration testleri kütüphaneyi dışarıdan, crate adıyla use eder.
3 Test türü ve yeri
| Kavram | Anlamı |
|---|---|
Unit test |
src/ içinde mod tests |
Integration test |
tests/*.rs |
Ortak yardımcı |
tests/ortak/mod.rs |
Doc test |
/// yorumlarında |