CodeBlanks Logo Icon CodeBlanks

TEST makrosu

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

main.cpp
#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

main.cpp
#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

Soru
____(CalcTest, Adds) {
    EXPECT_EQ(add(2, 3), 5);
}
Cevap
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

İleri seviye bölümündeki tüm dersler