C++
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.
Örnek çözümü göster
#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;
}
Kendini test et
-
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
Cevabı göster
Testler shared setup paylaştığında — TEST_F, shared setup olan fixture sınıflarıyla kullanılır.
-
Parçayı rolüne eşle
- 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
-
SetUp metodunu tamamla
void ____() override {
value = 42;
}
Cevabı göster
void SetUp() override {
value = 42;
}
Sıradaki ders: Mock