assert test
- C kursu
- İleri seviye
- Ders 67/83
- 5 dk
assert ile birim test öğrenirsin.
assert test
assert bir koşul yanlış olduğunda programı durdurur; <assert.h> başlığında tanımlıdır. Koşul doğruysa hiçbir şey olmaz, yanlışsa stderr'a ileti yazılır ve abort() çağrılır.
Birim testin (unit test) en basit biçimi budur: assert(2 + 2 == 4);. Hata ayıklama derlemelerinde assert aktiftir; yayında NDEBUG makrosuyla devre dışı bırakılır. Bu derste her zaman aktif varsayıyoruz; küçük koşulları sınamak için en hızlı yoldur.
assert kullanımı
Bir koşulu denetlemek için assert(koşul); yazarsın. Koşul doğru ise yürütme devam eder; yanlış ise program durur. Bu, değişmezlerin (invariant) kontrolü için idealdir.
Örnek: assert(p != NULL); işaretçinin boş olmadığını garanti eder. Hata oluştuğunda kaynağı ve satırı görürsün; bu yüzden assert hata ayıklamanın güçlü aracıdır. Testten sonra printf ile başarı iletisi yazdırmak yaygın bir desendir: printf("test: tamam\n");.
Uygulama İlk assert testi
assert(2 + 2 == 4); çağır. printf("test: tamam\n"); ile başarı iletisini yazdır. <assert.h> başlığını ekle.
Başlangıç kodu
#include <stdio.h>
#include <assert.h>
// 2 + 2 = 4 koşulunu assert ile denetle
// "test: tamam" iletisini yazdır
int main(void) {
return 0;
}Örnek çözüm
#include <stdio.h>
#include <assert.h>
int main(void) {
assert(2 + 2 == 4);
printf("test: tamam\n");
return 0;
}Beklenen çıktı
test: tamam
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 assert hangi başlıkta tanımlıdır?
- stdlib.h
- stdio.h
- assert.h Doğru cevap
- string.h
Açıklama: assert <assert.h> başlığındadır.
2 assert koşulu
assert(2 + 2 == ____);
assert(2 + 2 == 4);
Açıklama: 2 + 2 == 4 koşulu doğrudur, assert geçer.
3 assert kavramlarını eşle
| Kavram | Anlamı |
|---|---|
assert |
Koşul denetler |
abort |
Programı durdurur |
NDEBUG |
Assert kapatır |
stderr |
Hata iletisi |