2016-02-22 1 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 dit:gtest cas de test "EXPECT_CALL" erreur de compilation

"MyGTest_first_Test" has no member "gmock_f" 

Qu'est-ce que cela signifie? J'attends l'appel de g() pour appeler f() 2 fois. Toute erreur de syntaxe que j'ai faite?

Répondre

3

Pas une erreur de syntaxe, plus comme une approche complètement faux. La macro EXPECT_CALL est utilisée pour définir les attentes des appels de fonction à partir de objets fantaisie. Le problème est que vous ne passez pas un objet simulacre à EXPECT_CALL (un objet de classe dont la définition contient MOCK_METHODN), vous déréférenciez plutôt le pointeur this. Dans , vous passez un objet de votre classe de test à EXPECT_CALL. Voilà pourquoi la mentiones d'erreur classe du compilateur MyGTest_first_Test, gmock crée une nouvelle classe en arrière-plan, et son nom est une combinaison de nom de classe de fixation (MyGTest), test de nom de cas (first) et le nom de la classe de base (Test) .