2011-03-17 30 views
49

Bu yüzden, dahil olduğum bir C++ projesi için Google Testini beğenmekten ve beğenmekten zevk alıyorum. Düz C (kütüphane) olacak ve şimdiye kadar hiç bir şey göremeyen yeni bir proje hazırlıyorum. Google Testini kullanmaya devam etmeme nedeni, bir C++ çerçevesi olmasına rağmen. Bir C++ derleyicisine sahip olmak bir sorun olmayacaktır.Google Test, C kodunu test etmek için uygun mu?

Düz C kodunu test etmek için Google Test'i kullanmamamın belirli nedenleri var mı?

Teşekkürler.

+1

Bunu neden yapmak istediğinizi anlayabiliyorum, gtest oldukça iğrenç. Harika soru. –

cevap

1

Adını söyleyemedim. Sanırım "normal" C'de olmayan bazı şeyler olacak sanırım. E.g TestCase'in belli bir sınıftan türediğini düşünüyorum. Ama testin içinde istediğin şeyi test edebilirsin ve neden olmasın?

12

Tüm Google'ın C++ kodu gibi, Google Test istisnaları kullanmaz, bu nedenle istisna güvenliği akışı sorun olmaz. Başlıkları C++ - uyumlu olduğu sürece (C++ anahtar sözcüklerini kullanmazsanız, sembolleri doğru bağlantıyla), iyi olmalıdır.

2

Jason, farkında olmak !!! Meekrosoft'un dediği gibi, evet, mümkün. Bunu yapmaya çalıştığımda onun web sitesini de kullandım. Çalışıyor, ancak büyük bir sorun var:

GTest nesne yönelimli bir araçtır ve C dili değil!

EXPECT_CALL(turtle, PenDown())    // turtle is object(class) and PenDown() is method of that object 
     .Times(AtLeast(1)); 

https://code.google.com/p/googlemock/wiki/ForDummies böylece sadece makro kullanırsınız GTEST web sitesinden:

örnekte, GTEST içinde örneğin bir çok fonksiyonu (tüm API% 80) parametre olarak bu istek nesnesi var expect_equal, expect_bigger_than ve benzerleri gibi ...

CMocka (veya diğer bazı C birim test araçları) araçlarını önermek isterim. Ayrıca google'dan (google olmayan geliştiriciler grubu tarafından değiştirilmiştir) ve doğrudan C dili için oluşturulmuştur. C tipi kaynak kodunu test etmek istediğimde bunu kullanıyorum.

ben :-) .. :-) İyi günler .. Bu yardımcı olur umarım

+3

EXPECT_CALL, GoogleTest'te değil, GoogleMock'ta (alaycı bir çerçeve - bir birim test çerçevesi değil) tanımlanmamıştır. GoogleTest, birim test prosedürü (OO olmayan) koduna mükemmel şekilde uyan EXPECT_EQ ve EXPECT_TRUE gibi makroları tanımlar. Şu anda bir proje için kullanıyorum ve iyi çalışıyor. – weberc2

1
Sadece başka nokta eklemek düşündüm

: GTEST C olduğundan ++, sen altında C başlıklarını ayrıştırma olacak C++ olarak test edin. Bu, testlerin, başlıkların C'den tüketilebileceğini garanti etmediği anlamına geliyor. Yakın zamanda bunu yaptığım bir C kütüphanesi ile araştırdım.

İlgili konular