Unit test
- Rust kursu
- Orta seviye
- Ders 83/115
- 4 dk
#[test] ile unit test yazmayı öğrenirsin.
Unit test
Rust'ta test yazmak için ek araç gerekmez. #[test] ile işaretlenen fonksiyonlar cargo test ile çalıştırılır; panic veren test başarısız sayılır. Unit testler, test ettikleri kodla aynı dosyada bir tests modülünde durur:
fn topla(a: i32, b: i32) -> i32 {
a + b
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn iki_sayiyi_toplar() {
assert_eq!(topla(2, 3), 5);
}
}use super::*; sayesinde testler gizli fonksiyonlara da erişebilir.
Test çıktısı
cargo test her testin sonucunu ve özeti yazar:
running 2 tests
test tests::iki_sayiyi_toplar ... ok
test tests::negatifleri_toplar ... FAILED
failures:
---- tests::negatifleri_toplar stdout ----
assertion `left == right` failed
left: -1
right: 1
test result: FAILED. 1 passed; 1 failedBaşarılı testlerin println! çıktısı varsayılan olarak gizlenir; görmek için cargo test -- --nocapture. #[ignore] yavaş testleri varsayılan çalıştırmadan çıkarır.
Uygulama İlk test
fn topla(a: i32, b: i32) -> i32 ve onu assert_eq! ile denetleyen bir #[test] içeren #[cfg(test)] mod tests yaz. Alıştırma ortamı main'i çalıştırdığı için main'de topla(2, 3) sonucunu yazdır.
Başlangıç kodu
fn main() {
// buraya yaz
}Örnek çözüm
fn topla(a: i32, b: i32) -> i32 {
a + b
}
fn main() {
println!("{}", topla(2, 3));
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn iki_sayiyi_toplar() {
assert_eq!(topla(2, 3), 5);
}
}Beklenen çıktı
5
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>cargo test topla</code> ne çalıştırır?
- Hiçbirini
- Adında "topla" geçen testleri Doğru cevap
- topla fonksiyonunu
- Tüm testleri
Açıklama: Argüman bir süzgeçtir. Tek bir testi tam adla çalıştırmak için cargo test tests::iki_sayiyi_toplar -- --exact kullanılır.
2 Test işareti
#[cfg(test)]
mod tests {
use super::*;
#[____]
fn iki_sayiyi_toplar() {
assert_eq!(topla(2, 3), 5);
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn iki_sayiyi_toplar() {
assert_eq!(topla(2, 3), 5);
}
}
Açıklama: #[test] fonksiyonu test koşucusuna kaydeder.
3 Komut ve etkisi
| Kavram | Anlamı |
|---|---|
cargo test |
Tüm testler |
cargo test topla |
Ada göre süzer |
cargo test -- --nocapture |
Çıktıyı gösterir |
#[ignore] |
Varsayılanda atlar |