TEST makrosu
- C++ kursu
- İleri seviye
- Ders 38/83
- 5 dk
TEST makrosu ile test yazmayı öğrenirsin.
TEST makrosu sözdizimi
TEST makrosu iki bağımsız değişken alır: test suite adı ve test adı. İkisi de geçerli C++ tanımlayıcı olmalı (harf, rakam, alt çizgi; rakamla başlamaz). Süslü parantezler arasında test gövdesi yazılır.
Örnek: TEST(CalcTest, Adds) { ... }. Burada CalcTest bir grup, Adds ise bu gruptaki bir testtir. Aynı suite adını paylaşan testler çıktıda birlikte gösterilir. Bu sayede ilgili testleri tek bir çatı altında toplayabilirsin. Suite adı genelde sınıf adı, test adı ise davranış olur.
Test gövdesinde assertion
Test gövdesinde, beklenen davranışı denetleyen assertion makroları çağrılır. En sık kullanılanlar: EXPECT_EQ(a, b) eşitlik, EXPECT_TRUE(x) doğruluk, EXPECT_FALSE(x) yanlışlık, EXPECT_STREQ(s1, s2) dize eşitliği için.
Bir testte birden çok assertion olabilir; hepsi sırayla çalışır. Örnek: TEST(CalcTest, Adds) { EXPECT_EQ(add(2, 3), 5); EXPECT_EQ(add(0, 0), 0); }. İlk assertion başarısız olsa bile ikincisi yine de çalışır (EXPECT özelliği). Bu, tek testte birden çok durumu denetlemeyi kolaylaştırır.
Uygulama CalcTest testini yaz
add(int a, int b) fonksiyonunu tanımla (a + b döndürsün). TEST(CalcTest, Adds) makrosu içinde EXPECT_EQ(add(2, 3), 5) ve EXPECT_EQ(add(0, 0), 0) çağır. main içinde std::cout << "test: hazır"; yaz.
Başlangıç kodu
#include <iostream>
#include <gtest/gtest.h>
// add fonksiyonunu tanımla
// CalcTest suite'una bir test ekle
int main(int argc, char** argv) {
std::cout << "test: hazır";
return 0;
}Örnek çözüm
#include <iostream>
#include <gtest/gtest.h>
int add(int a, int b) { return a + b; }
TEST(CalcTest, Adds) {
EXPECT_EQ(add(2, 3), 5);
EXPECT_EQ(add(0, 0), 0);
}
int main(int argc, char** argv) {
std::cout << "test: hazır";
return 0;
}Beklenen çıktı
test: hazır
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 TEST makrosunu tamamla
____(CalcTest, Adds) {
EXPECT_EQ(add(2, 3), 5);
}
TEST(CalcTest, Adds) {
EXPECT_EQ(add(2, 3), 5);
}
Açıklama: TEST makrosu bir test tanımlar.
2 TEST makrosunun ilk bağımsız değişkeni neyi belirtir?
- Test süresini
- Test dosyası adını
- Beklenen çıktıyı
- Test suite adını Doğru cevap
Açıklama: İlk bağımsız değişken test suite adıdır; ilgili testleri gruplar.
3 Assertion makrosunu rolüne eşle
| Kavram | Anlamı |
|---|---|
EXPECT_EQ(a, b) |
Eşitlik denetler |
EXPECT_TRUE(x) |
Doğruluk denetler |
EXPECT_FALSE(x) |
Yanlışlık denetler |
EXPECT_STREQ(s1, s2) |
Dize eşitliği denetler |