2011-07-20 105 views

回答

7

我最近爲我的最新項目搜索了單元測試和嘲笑框架,並用Google Mock進行了搜索。它有最好的文檔,看起來相當有特色(儘管我還沒有創建非常複雜的模擬對象)。我最初想到的是使用boost::test,但最終卻使用了Google Test(我認爲這是Google Mock的先決條件,即使您使用其他測試框架)。它也有很好的文檔,並且具有我期望的大部分功能。

2

GoogleMock有關於使用another framework的章節。

+0

事實上,它仍然存在內存泄漏並且需要解決方法:http://stackoverflow.com/questions/38890959/initgooglemock-causes-memory-leak-with-boosttest?noredirect=1#comment65142935_38890959 – Ioanna

6

您可以試試Turtle

+0

什麼是龜的優點? –

+0

那麼,它很容易與boost :: test集成:例如,您不需要使用gmock來完成boost :: test項目所需的所有解決方法(另請參閱http://stackoverflow.com/questions/38890959/initgooglemock-原因存儲器泄漏與 - boosttest?noredirect = 1#comment65142935_38890959)。 – Ioanna

6

Here你有一個使用Google Mock和Boost Test的例子。我更喜歡Boost Test,因爲我經常使用其他Boost libraries

7

Fake-It是一個簡單的模擬框架,用於C++使用最新的C++ 11功能來創建一個表達(但非常簡單)的API。 使用FakeIt,不需要重新聲明方法,也不需要爲每個模擬創建派生類,並且它具有內置的boost :: test集成。 這裏是你如何假它:

struct SomeInterface { 
    virtual int foo(int) = 0; 
}; 

// That's all you have to do to create a mock. 
Mock<SomeInterface> mock; 

// Stub method mock.foo(any argument) to return 1. 
When(Method(mock,foo)).Return(1); 

// Fetch the SomeInterface instance from the mock. 
SomeInterface &i = mock.get(); 

// Will print "1" 
cout << i.foo(10); 

還有更多的功能,以探索。繼續和give it a try