Amacını anlamaya çalışıyorum
google-mock, Google'ın C ++ alay çerçevesi.
Zaten çalıştım
gtest Daha önce, ama hala ne olduğunu anlayamıyorum
gmock olduğunu. Neden buna ihtiyacımız var?
gtest Birim testi için kullanılır. Neye ihtiyacımız var
gmock eğer öyleyse
gmock için gereklidir
unit testing?
"Google Mock bir test çerçevesinin kendisi değil. Bunun yerine, testler için bir test çerçevesine ihtiyaç duyuyor. Google Mock, Google Test ile sorunsuz bir şekilde çalışıyor. Google Test paketinin bir kopyası geliyor. Sürüm 1.1.0'dan başlayarak, ayrıca seçtiğiniz herhangi bir C ++ test çerçevesi ile. "- Google Mock, Sistem Gereksinimleri
Sahte, kontrollü davranışı sağlayarak gerçek anlaşmayı taklit edecek şekilde tanımlanan nesneler gibidir. Örneğin, bir hisse senedi kene uygulamasını test etmek için, kodunuzu test etmek için sahte hisse senedi fiyatları oluşturan bir sahte stok veri sağlayıcısı oluşturursunuz. Sahte kelimeyi düşünün, kelimenin tam anlamıyla 'taklit' anlamına gelir.
Yazılım birimleri yeşil çayırlarda yaşamıyor. İşi yapmak için çoğu zaman bazı meslektaşlara ihtiyaç duyarlar. Gerçek sistemde, bu karşıtlar sistemin kendisine aittir. Birim testlerinde mocks ile değiştirilir.
Gtest, birim testi için bir çerçevedir.
Gmock, birim testleri sırasında sisteminizin geri kalanını taklit eden bir çerçevedir.
Tahmin edilemez, pahalı, harici bir sistemle (örneğin bir Web sitesi, büyük bir veritabanı, bir fiziksel sensör, vb.) Etkileşime girmesi gereken bir kod parçası yazdığınızı varsayalım. Harici sistem zaman aşımına uğradığında kodunuzun çalışmaya devam etmesi gerekir. veya hata mesajı verir veya tutarsız veri verir. Kodunuzun gerçekten bu gereksinimleri karşılayıp karşılamadığını nasıl test edebilirsiniz?
Eh, gerçek bir Web sitesi / veritabanı / sensör / her ne olursa olsun, bir kaç kez çalıştırabilir ve kodunuzun ele alması gereken tüm hata koşullarına iyi şanslar dileriz. Açıkçası oldukça pahalı ve güvenilmez bir test stratejisi.
Bunun yerine, Web sitesi / veritabanı / sensör / ile aynı arabirimi karşılayan, ancak belirli "konserve" yanıtları (hatalar, zaman aşımları, tutarsız veriler, vb.) Üretmeyi programladığınız bir şey yazabilirsiniz. Testleriniz şimdi çok daha hızlı koşarlar (çünkü gerçek Web sitesi / veritabanı / sensör / her neyse) ve tahmin edilebilir. Ne yazık ki, test etmeniz gereken her senaryo için ayrı bir "sahte" Web sitesi / veritabanı / sensör / her ne olursa olsun yazmak için çok fazla kodlama gerekir. Daha fazla iş, bunu yapmak için daha az olasıdır. Sonuç: yetersiz test edilmiş kod.
Gmock ve akrabaları, bu şeylerin çoğunu otomatikleştiriyor, böylece testin ortasında, sadece birkaç satırlık kodun maliyeti ile istenen "konserve" davranışını belirtebilirsiniz. Testlerin yazılması kolaysa, muhtemelen daha fazlasını yazacaksınız ve bu nedenle kodu göndermeden önce hataları bulmanız daha olasıdır :-)
BTW, bu da "bağımlılık enjeksiyonuna" ihtiyaç duyduğunuzu gösterir: kodunuzun, arabirim türünde bir parametreyi alması gerekir ve sahte bir nesne (birim testi için) veya "gerçek" olarak geçebilmeniz gerekir. Web sitesi / veritabanı / sensör / neyse (gerçek dünya kullanımı için).