Doğrulamalar ve Eşleştiriciler
Anlatımı güçlü denetimler yazın
Doğrulamalar ve Eşleştiriciler, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.
Doğrulamalar Beklentileri İfade Eder
GTest doğrulamaları, bir sınama içindeki koşulları denetler. İki önem düzeyi vardır.
EXPECT_*: başarısızlık kaydedilir, sınama devam ederASSERT_*: başarısızlık geçerli sınamayı hemen durdurur
EXPECT ve ASSERT Karşılaştırması
Devam etmek çökmeye neden olacaksa (ör. boş değer denetiminden sonra) ASSERT_* kullanın; diğer durumlarda tüm başarısızlıkları aynı anda görebilmek için EXPECT_* kullanın.
#include <gtest/gtest.h>
TEST(Demo, MixedChecks) {
int* p = new int(5);
ASSERT_NE(p, nullptr);
EXPECT_EQ(*p, 5);
delete p;
}Karşılaştırma Doğrulamaları
Temel karşılaştırma makroları:
EXPECT_EQ,EXPECT_NEEXPECT_LT,EXPECT_LEEXPECT_GT,EXPECT_GE
#include <gtest/gtest.h>
TEST(Compare, Numbers) {
EXPECT_LT(2, 3);
EXPECT_GE(5, 5);
}Boolean Doğrulamaları
EXPECT_TRUE ve EXPECT_FALSE, Boolean koşullarını doğrudan denetler.
#include <gtest/gtest.h>
bool is_even(int n) { return n % 2 == 0; }
TEST(Bool, Even) {
EXPECT_TRUE(is_even(4));
EXPECT_FALSE(is_even(3));
}Kayan Nokta Karşılaştırmaları
Kayan noktalı sayılarda hiçbir zaman EXPECT_EQ kullanmayın. Toleransla birlikte EXPECT_FLOAT_EQ, EXPECT_DOUBLE_EQ veya EXPECT_NEAR kullanın.
#include <gtest/gtest.h>
TEST(Floats, Approx) {
EXPECT_DOUBLE_EQ(0.1 + 0.2, 0.3);
EXPECT_NEAR(3.14159, 3.14, 0.01);
}Dize Doğrulamaları
C dizeleri için EXPECT_STREQ / EXPECT_STRNE kullanın. std::string için EXPECT_EQ değerleri karşılaştırdığı için çalışır.
#include <gtest/gtest.h>
#include <string>
TEST(Strings, Compare) {
EXPECT_STREQ("hi", "hi");
EXPECT_EQ(std::string("ok"), "ok");
}Özel Durum Doğrulamaları
Kodun beklenen özel durumu fırlattığını doğrulayın.
#include <gtest/gtest.h>
#include <stdexcept>
void check(int n) {
if (n < 0) throw std::runtime_error("neg");
}
TEST(Throws, Negative) {
EXPECT_THROW(check(-1), std::runtime_error);
EXPECT_NO_THROW(check(1));
}Özel Başarısızlık İletileri
Başarısızlıkların tanılanmasını kolaylaştırmak için << ile bir doğrulamaya ek bağlam aktarın.
#include <gtest/gtest.h>
TEST(Message, WithContext) {
int x = 7;
EXPECT_EQ(x, 7) << "x had unexpected value " << x;
}EXPECT_THAT ile GMock Eşleştiricileri
EXPECT_THAT, etkileyici denetimler için bir değeri eşleştirici ile birleştirir; örneğin EXPECT_THAT(v, ElementsAre(1, 2, 3)).
#include <gtest/gtest.h>
#include <gmock/gmock.h>
#include <vector>
using ::testing::ElementsAre;
TEST(Matchers, Vector) {
std::vector<int> v{1, 2, 3};
EXPECT_THAT(v, ElementsAre(1, 2, 3));
}Yararlı Eşleştiriciler
Yaygın eşleştiriciler şunlardır:
Eq,Ne,Gt,LtContains,ElementsAre,UnorderedElementsAreHasSubstr,StartsWith,EndsWith
Doğru Doğrulamayı Seçme
En özel doğrulamayı tercih edin: genel bir EXPECT_TRUE makrosuna kıyasla daha anlaşılır başarısızlık iletileri üretir. EXPECT_EQ(a, b) her iki değeri de yazdırır; EXPECT_TRUE(a == b) yazdırmaz.
Hızlı Kontrol
EXPECT ile ASSERT arasındaki farkı hatırlayın.
Özet
GTest doğrulamalarını öğrendiniz.
EXPECT_*devam eder;ASSERT_*sınamayı durdurur- Karşılaştırma, Boolean, kayan nokta, dize ve özel durum makroları
<<ile ek bağlam aktarın- Etkileyici denetimler için
EXPECT_THAT+ eşleştiricileri kullanın
Sıkça Sorulan Sorular
“Doğrulamalar ve Eşleştiriciler” dersi ücretsiz mi?
Evet — “Doğrulamalar ve Eşleştiriciler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.
“Doğrulamalar ve Eşleştiriciler” dersinde ne öğreneceğim?
Anlatımı güçlü denetimler yazın C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C++ Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Doğrulamalar ve Eşleştiriciler” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- GTest Kurulumu
- Doğrulamalar ve Eşleştiriciler
- Test Düzenekleri ve Kurulum
- GMock ile Taklitler