EXPECT_CALL de googlemock conduit à “fichier inconnu:erreur: SEH exception avec le code 0xc0000005 jeté dans l'épreuve du corps”
Je suis novice googlemock. Mon projet actuel besoins googlemock à utiliser. J'ai appris les bases de gmock à partir d'aide de google site. Mais quand j'ai essayé de mettre en œuvre la même dans mon projet, il a jeté SEH exception with code 0xc0000005
erreur.
Mon projet a plusieurs threads, l'un des thread d'appel RUN_ALL_TESTS
Le code ci-dessus conduit à SEH exception
outils: VS2010, windows 7
Try to mock the function of a class
using ::testing::Return;
using ::testing::Test;
using ::testing::NiceMock;
class OsInterfaceCPP
{
public:
OsInterfaceCPP(void){};
virtual ~OsInterfaceCPP(void){};
virtual int add_test(int a, int b) = 0;
int calladdtest(int aa, int bb)
{
return add_test(aa,bb);
}
};
class OsCPPApis : public OsInterfaceCPP
{
public:
OsCPPApis(void){};
virtual ~OsCPPApis(void){};
virtual int add_test(int aa, int bb)
{
return (aa+bb);
}
};
class MockedOSCPPApis : public OsCPPApis
{
public:
MockedOSCPPApis(void){};
virtual ~MockedOSCPPApis(void){};
MOCK_METHOD2(add_test, int(int aaa, int bbb));
};
OSapiTestFunc::OSapiTestFunc(void){}
OSapiTestFunc::~OSapiTestFunc(void){}
void OSapiTestFunc::SetUp(){}
void OSapiTestFunc::TearDown(){}
void OSapiTestFunc::RunTests()
{
int argc=0;
char **argv = 0;
::testing::InitGoogleMock(&argc, argv);
}
TEST_F(OSapiTestFunc, OS_Test1)
{
OsCPPApis TestOscppapis;
MockedOSCPPApis Testmockosapi;
int a, b;
a = 2;
b = 5;
bool test1var = true;
EXPECT_CALL(Testmockosapi,add_test(a, b));
TestOscppapis.add_test(5,3);
}
Pourquoi avez-vous hériter
MockedOSCPPApis
de OsCPPApis
et non pas de la OsInterfaceCPP
? Aussi loin que je peux voir, il n'y a rien à se moquer de OsCPPApis
il met en œuvre add_test()
.OriginalL'auteur user1934188 | 2012-12-28
Vous devez vous connecter pour publier un commentaire.
0xC0000005 est un "vous avez accédé à la mémoire qui n'existe pas". Je ne vois pas exactement où dans votre code ce qui se passe maintenant. Mais c'est certainement ce qui va mal. Vous pouvez exécuter avec un débogueur et de voir où est-ce qu'il va mal.
OriginalL'auteur Mats Petersson
Le seul point que j'avais supect être la raison pour laquelle une (très probablement) de pointeur NULL accès est
Généralement, lorsque cela est appelé à partir d'un
main()
fonctionner comme prévu, au moinsargv
ne serait jamais NULLE, car le premier argument contient toujours le nom de l'exécutable.Mise à JOUR:
Remarque mon montage comment
argc
est passé! Tout simplement le valeur pas le adresse!Gmock
moi aussi je ne reçois la même erreur.Ensuite, il pourrait être un problème avec le
MockedOSCPPApis
implémentation de la classe comme je l'ai mentionné dans mon commentaire sur la question.Comment ça va marcher?
InitGoogleMock
excepcts un &int et le chemin d'accès comme arguments.OriginalL'auteur πάντα ῥεῖ