Gmock

2012-02-13 14 views
12

için otomatik nesil sahte sınıflar gmock kullanarak C++ kodu biriminde test ediyorum. gtest framework kullanmıyorum. Visual studio 2008'in yerleşik test çerçevesini kullanıyorum.Gmock

Şimdi benim problemim, gerçek bir sınıf için mock sınıflarını manuel olarak test etmem gerektiğidir. Örneğin 5 fonksiyona sahip bir sınıfım varsa MockAClass'ı 5 fonksiyonla yazmam gerekiyor. Bu sınıfların otomatik olarak oluşturulmasının bir yolu var mı?

class AClass 
{ 
public: 
    virtual int AFunction() 
    { 
     return 5; 
    } 
    virtual int AFunctionWithArguments(int x) 
    { 
     return x; 
    } 



class MockAClass : public AClass 
{ 
public: 
    MOCK_METHOD0(AFucntion, int()); 
    MOCK_METHOD1(AFunctionWithArgument, int(int x)); 
}; 

cevap

18

bu konuda daha fazla bilgi edinebilirsiniz bu konuda size yardımcı olacaktır google sahte projesi ile birlikte bir aracı yoktur. Ancak, aracın yüklenecek python gerektirdiğini düşünüyorum ve bir pencere ortamında ne kadar iyi çalıştığını bilmiyorum. Oluşturulan dosyaların bazen mükemmel bir şekilde çalışmak için küçük bir düzeltmeye ihtiyaç duyduğunu da gördüm. İşte

docs gelen bilgiler verilmiştir:

İpucu: Hatta bu sizin için çok fazla iş varsa, Google Mock en komut/jeneratör/dizin (nezaket içinde gmock_gen.py aracı bulabilirsiniz cppclean projesinin faydalı). Bu komut satırı aracı , Python 2.4'ün yüklü olmasını gerektirir. Bunu bir C++ dosyası ve tanımlanmış bir soyut sınıfın adını verin ve sizin için sahte sınıfın tanımını yazdıracaktır. C++ dilinin karmaşıklığı nedeniyle, bu betik her zaman işe yaramayabilir, ancak ne zaman olursa olsun oldukça kullanışlı olabilir. Daha fazla bilgi için kullanıcı dokümanlarını okuyun.

İşte new localization of this script.

+0

teşekkürler, ben bunu kullanmayı deneyin ve iş, –

+0

çalışmasını umuyorum ki komut dosyaları olduğunu söyledi. Teşekkürler. –

+1

Bu, kesinlikle Windows'ta çalışır. Python 2.7'deyim ve sorun değil. Normal uyarılar, el tweaks için geçerlidir ... – rholmes

2

Yasal Uyarı: Eğer başka bir araç kullanmayı düşündünüz mü ben Typemock

de çalışmaları için kullanılan?
Typemock, "alay sınıfları" yazmanıza gerek olmayan Isolator++ adlı bir araca sahiptir.

TEST_F(IsolatorTests, SomeTest) 
{ 
     AClass* fakeclass = FAKE(AClass); 
     WHEN_CALLED(fakeclass->AFunction()).Return(10); 

     ASSERT_EQ(10, fakeclass.AFunction()); 
} 

Bu about page

+0

İzleyici ++ hakkında bilgi okudum. ama bu bedava değil. Bunun için lisans almalısın. –

+1

Evet - maalesef onların sıkı çalışması için para istiyorlar;) –

+3

@DrorHelper Muhtemelen Typemock için çalıştığınız bir sorumluluk reddi. (Bu, kötü bir ürün vb. Değil, ancak bu tür potansiyel önyargı kaynaklarını açıklamak için iyi bir şey değildir). –