CodeBlanks Logo Icon CodeBlanks

Özet - Test temelleri

TEST, ASSERT ve Mock'u birleştirerek bir hesap makinesi testi yazarsın.

Özet: test araçlarını birleştir

Bu özette TEST makrosu, ASSERT/EXPECT ayrımı ve fixture'ı bir hesap makinesi testinde birleştireceksin. Önce bir Calc sınıfı yazacaksın, sonra bir fixture ile shared setup kurup TEST_F ile test edeceksin.

Calc sınıfının add(int, int) metodu olsun. CalcTest fixture'ı SetUp'ta bir Calc nesnesi hazırlasın. TEST_F(CalcTest, Adds) içinde EXPECT_EQ(calc.add(2, 3), 5) çağrılsın. Böylece fixture, test ve assertion birlikte çalışır; bu, gerçek projelerdeki test yapısının küçük bir örneğidir.

Uygulama Hesap makinesi testini yaz

Calc sınıfını tanımla: public int add(int a, int b) { return a + b; }. CalcTest fixture'ını ::testing::Test'ten türet; SetUp'ta Calc calc; üyesini hazırla. TEST_F(CalcTest, Adds) içinde EXPECT_EQ(calc.add(2, 3), 5) çağır. main içinde std::cout << "test: hazır"; yaz.

Başlangıç kodu

main.cpp
#include <iostream>
#include <gtest/gtest.h>

// Calc sınıfını tanımla
// CalcTest fixture'ını ve TEST_F 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>

class Calc {
public:
    int add(int a, int b) { return a + b; }
};

class CalcTest : public ::testing::Test {
protected:
    void SetUp() override {
        calc = Calc();
    }
    Calc calc;
};

TEST_F(CalcTest, Adds) {
    EXPECT_EQ(calc.add(2, 3), 5);
}

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 Fixture ve mock birlikte ne sağlar?

  • Daha hızlı derleme
  • Shared setup ve izole bağımlılıklar Doğru cevap
  • Renkli çıktı
  • Daha az kod satırı

Açıklama: Fixture shared setup, mock ise bağımlılıkları izole eder.

2 TEST_F çağrısını tamamla

Soru
____(CalcTest, Adds) {
    EXPECT_EQ(calc.add(2, 3), 5);
}
Cevap
TEST_F(CalcTest, Adds) {
    EXPECT_EQ(calc.add(2, 3), 5);
}

Açıklama: TEST_F, fixture'lı test tanımlar.

3 Aracı rolüne eşle

Kavram Anlamı
TEST Basit test tanımlar
TEST_F Fixture'lı test tanımlar
EXPECT_EQ Eşitlik denetler
MOCK_METHOD Sahte metot oluşturur

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