CodeBlanks Logo Icon CodeBlanks

GoogleTest

GoogleTest test çerçevesini öğrenirsin.

GoogleTest nedir?

GoogleTest (gtest), C++ için yaygın bir test çerçevesidir (framework). Google tarafından geliştirilmiştir ve açık kaynaktır. Test yazmak, çalıştırmak ve sonuçu raporlamak için makrolar sağlar. C++20 projelerinde standart seçimdir.

Kullanmak için #include <gtest/gtest.h> satırını eklersin. Her test bir TEST makrosuyla tanımlanır. main içinde testing::InitGoogleTest ve RUN_ALL_TESTS() çağrılarak tüm testler çalıştırılır. Bu derste sözdizimini öğreneceğiz; çıktıyı basit tutmak için std::cout kullanacağız.

TEST makrosu ve assertion

GoogleTest'te her test TEST(SuiteAdi, TestAdi) makrosuyla yazılır. Süslü parantezler içinde assertion denilen denetimler bulunur: EXPECT_EQ(a, b) a ile b'nin eşit olduğunu, EXPECT_TRUE(x) x'in doğru (true) olduğunu sınar.

Birden çok test aynı_suite adı altında toplanır; bu sayede ilgili testler gruplanır. Örnek: TEST(CalcTest, Adds) { EXPECT_EQ(2 + 2, 4); }. Burada CalcTest suite, Adds test adıdır. Assertion başarısız olursa test hâlâ devam eder (EXPECT) ya da durur (ASSERT); bu ayrımı bir sonraki derste göreceğiz.

Uygulama İlk GoogleTest programını yaz

#include <gtest/gtest.h> başlığını ekle. TEST(SampleTest, Equals) makrosu içinde EXPECT_EQ(2 + 2, 4) çağır. main içinde std::cout << "test: hazır"; yaz.

Başlangıç kodu

main.cpp
#include <iostream>

// <gtest/gtest.h> başlığını ve TEST makrosunu 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>

TEST(SampleTest, Equals) {
    EXPECT_EQ(2 + 2, 4);
}

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 GoogleTest için hangi başlık eklenir?

  • #include <gtest/gtest.h> Doğru cevap
  • #include <test.h>
  • #include <iostream>
  • #include <cpp/test>

Açıklama: <gtest/gtest.h> başlığı GoogleTest'i kullanıma sunar.

2 gtest başlığını tamamla

Soru
#include <____/gtest.h>
Cevap
#include <gtest/gtest.h>

Açıklama: <gtest/gtest.h> başlığı GoogleTest makrolarını sağlar.

3 Parçayı rolüne eşle

Kavram Anlamı
#include <gtest/gtest.h> GoogleTest başlığı
TEST(Suite, Name) Test tanımlar
EXPECT_EQ(a, b) Eşitlik denetler
RUN_ALL_TESTS() Tüm testleri çalıştırır

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