2016-02-22 9 views
1
#include "gtest\gtest.h" 
using namespace testing; 

class MyGTest : public Test 
{ 
public: 
    void f(){} 
    void g(){ 
     f(); 
     f(); 
    } 
}; 

TEST_F(MyGTest, first) 
{ 
    EXPECT_CALL(*this, f()).Times(2); 
    g(); 
} 

VC2013 говорит:GTEST тест "EXPECT_CALL" ошибка компиляции

"MyGTest_first_Test" has no member "gmock_f" 

Что это значит? Я ожидаю, что вызов g() вызовет f() 2 раза. Любая синтаксическая ошибка, которую я сделал?

ответ

3

Не синтаксическая ошибка, скорее как совершенно неправильный подход. Макрос EXPECT_CALL используется для определения ожиданий вызовов функций от макетных объектов. Проблема в том, что вы не передаете mock объект в EXPECT_CALL (объект класса, определение которого содержит MOCK_METHODN), вы вместо этого выставляете указатель вместо this. В этом случае вы передаете объект вашего тестового класса EXPECT_CALL. Поэтому компилятор mentiones ошибок класс MyGTest_first_Test, gmock создает новый класс в фоновом режиме, и его именем является сочетанием имени класса арматуры (MyGTest), названием случае теста (first) и имя базового класса (Test) ,

Смежные вопросы