Özet - Test temelleri
- C++ kursu
- İleri seviye
- Ders 42/83
- 5 dk
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
#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
#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
____(CalcTest, Adds) {
EXPECT_EQ(calc.add(2, 3), 5);
}
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 |