CodeBlanks Logo Icon CodeBlanks

Test fixture

Test fixture ile ortak kurulum öğrenirsin.

Test fixture nedir?

Birden çok test aynı kurulum kodunu kullanıyorsa, bunu tekrarlamak yerine bir test fixture tanımlarsın. Fixture, ::testing::Test sınıfından türetilir ve SetUp() / TearDown() metotları içerir. Her test öncesi SetUp, sonrası TearDown çalışır.

Fixture kullanan testler TEST yerine TEST_F(FixtureAdi, TestAdi) makrosuyla yazılır. Örnek: class CalcTest : public ::testing::Test { protected: void SetUp() override { calc = new Calculator(); } Calculator* calc; };. Sonra TEST_F(CalcTest, Starts) { ... } yazarsın. Bu, her testin temiz bir kurulumla başlamasını sağlar.

SetUp ve TearDown yaşam döngüsü

Fixture sınıfında SetUp() her testten önce, TearDown() her testten sonra çağrılır. SetUp'ta kaynakları (nesne, dosya, bağlantı) hazırlarsın; TearDown'ta bunları temizlersin. Böylece testler birbirinden bağımsız olur.

Örnek: void SetUp() override { list.clear(); list.push_back(1); }. Her test başlarken liste {1} olur. void TearDown() override { list.clear(); } ile test bitince liste boşaltılır. Üyeler protected: yapılır ki testler erişebilsin. Bu, her testin aynı başlangıç durumunda çalışmasını sağlar.

Uygulama CalcTest fixture yaz

CalcTest fixture sınıfını ::testing::Test'ten türet. protected: bölümünde void SetUp() override tanımla ve int value = 42; ataması yapsın; int value; üyesi olsun. TEST_F(CalcTest, HasValue) makrosu içinde EXPECT_EQ(value, 42) çağır. main içinde std::cout << "test: hazır"; yaz.

Başlangıç kodu

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

// CalcTest fixture sınıfını tanımla
// CalcTest için TEST_F makrosu 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 CalcTest : public ::testing::Test {
protected:
    void SetUp() override {
        value = 42;
    }
    int value;
};

TEST_F(CalcTest, HasValue) {
    EXPECT_EQ(value, 42);
}

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_F ne zaman TEST yerine kullanılır?

  • Testi daha hızlı çalıştırmak için
  • Tek test yazıldığında
  • Çıktıyı renklendirmek için
  • Testler shared setup paylaştığında Doğru cevap

Açıklama: TEST_F, shared setup olan fixture sınıflarıyla kullanılır.

2 Parçayı rolüne eşle

Kavram Anlamı
class CalcTest : public ::testing::Test Fixture sınıfı
void SetUp() override Her test öncesi çalışır
void TearDown() override Her test sonrası çalışır
TEST_F(CalcTest, Name) Fixture'lı test

3 SetUp metodunu tamamla

Soru
void ____() override {
        value = 42;
    }
Cevap
void SetUp() override {
        value = 42;
    }

Açıklama: SetUp metodu her testten önce değer ataması yapar.

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