Soru Gtest ve gmock arasındaki fark nedir?


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?


22
2017-12-04 05:01


Menşei




Cevaplar:


"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.


33
2017-12-04 06:21





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.


22
2018-04-19 10:15



Cevabınız için teşekkürler - Rasmi Ranjan Nayak


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).


8
2018-04-13 19:54