GoogleTest
- C++ kursu
- İleri seviye
- Ders 37/83
- 5 dk
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
#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
#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
#include <____/gtest.h>
#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 |