Test dobleleri
- C kursu
- İleri seviye
- Ders 69/83
- 5 dk
Test dobleleri ve stub yazmayı öğrenirsin.
Test dobleleri
Test dobleleri (test doubles), gerçek bağımlılıkların yerine geçen köpeklerdir: stub, mock ve fake. En yaygın olanı stub'tır; sabit bir değer döndürür.
Örnek: time() işlevi her çağrıda farklı değer döndüğü için test edilmesi zordur. long stub_time(void) { return 1000; } yazarak deterministik bir değer alırsın. Böylece test her makinede aynı sonucu verir. Stub, dış dünyayı (saat, rastgele sayı, ağ) testten ayırır.
Stub türleri
Stub sabit değer döner; mock aynı zamanda hangi çağrıların yapıldığını kaydeder; fake basitleştirilmiş ama çalışan bir uygulama sunar (örneğin bellek içi veritabanı).
Bu derste yalnızca stub kullanıyoruz: long stub_time(void). Main içinde long t = stub_time(); ve printf("zaman: %ld\n", t); yazarsın. Çıktı her zaman "zaman: 1000" olur; bu deterministik testin tanımıdır. Gerçek time ile test, saat başına farklı sonuç verirdi.
Uygulama stub_time yaz
long stub_time(void) işlevini yaz: return 1000;. main'de long t = stub_time(); ve printf("zaman: %ld\n", t); yazdır.
Başlangıç kodu
#include <stdio.h>
// long stub_time(void) yaz: 1000 döndürsün
// main: stub_time çağır ve zamanı yazdır
int main(void) {
return 0;
}Örnek çözüm
#include <stdio.h>
long stub_time(void) {
return 1000;
}
int main(void) {
long t = stub_time();
printf("zaman: %ld\n", t);
return 0;
}Beklenen çıktı
zaman: 1000
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 stub_time gövdesi
long stub_time(void) { return ____; }
long stub_time(void) { return 1000; }
Açıklama: Stub sabit 1000 döndürür; test deterministiktir.
2 Doble türlerini eşle
| Kavram | Anlamı |
|---|---|
stub |
Sabit değer |
mock |
Çağrı kaydı |
fake |
Basit uygulama |
real |
Gerçek bağımlılık |
3 stub_time ne zaman kullanışlıdır?
- Deterministik test için Doğru cevap
- Bellek ayırmak için
- Dosya kapatmak için
- Sinyal göndermek için
Açıklama: Stub, deterministik test için sabit değer verir.