C++ gmock EXPECT_调用未调用测试类中的方法
我不熟悉gmock测试。我有一个Foo类,它有成员函数set()和start()。Start()触发set(),类成员member1设置为1,member2设置为2。当我尝试在gmock中测试时,我看不到这些成员已设置。为什么以及如何解决此问题?谢谢 test.h文件C++ gmock EXPECT_调用未调用测试类中的方法,c++,testing,gmock,C++,Testing,Gmock,我不熟悉gmock测试。我有一个Foo类,它有成员函数set()和start()。Start()触发set(),类成员member1设置为1,member2设置为2。当我尝试在gmock中测试时,我看不到这些成员已设置。为什么以及如何解决此问题?谢谢 test.h文件 #ifndef TEST_H_ #define TEST_H_ #include <gtest/gtest.h> #include <gmock/gmock.h> class Foo { publi
#ifndef TEST_H_
#define TEST_H_
#include <gtest/gtest.h>
#include <gmock/gmock.h>
class Foo
{
public:
Foo();
virtual~Foo();
int member1;
int member2;
virtual void set();
virtual void start();
};
class MockFoo:public Foo
{
public:
MOCK_METHOD0(set, void());
};
#endif /* TEST_H_ */
尝试删除
.WillOnce(::testing::Return())
,因为它会导致Foo::set()
不被调用,因为您正在模拟函数
您可能需要在EXPECT\u调用之后手动调用Foo::set(),因为在模拟方法之后,将不再调用被重写的函数。尝试添加.WillOnce(调用(this,&Foo::set))
#include <stdio.h>
#include <stdlib.h>
#include "test.h"
using ::testing::AtLeast;
using ::testing::Return;
Foo::Foo(){};
Foo::~Foo(){};
void Foo::set()
{
member1=1;
member2=2;
}
void Foo::start()
{
this->set();
}
TEST(simplesuite, callmethods)
{
MockFoo mockfoo_obj;
EXPECT_CALL(mockfoo_obj, set())
.Times(AtLeast(1))
.WillOnce(::testing::Return());
mockfoo_obj.start();
ASSERT_EQ(mockfoo_obj.member1,1);
}
int main( int argc, char *argv[] ) {
::testing::InitGoogleMock( &argc, argv );
return RUN_ALL_TESTS( );
}
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from simplesuite
[ RUN ] simplesuite.callmethods
simpleGmock.cpp:39: Failure
Expected: mockfoo_obj.member1
Which is: -528070912
To be equal to: 1
[ FAILED ] simplesuite.callmethods (0 ms)
[----------] 1 test from simplesuite (0 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (1 ms total)
[ PASSED ] 0 tests.
[ FAILED ] 1 test, listed below:
[ FAILED ] simplesuite.callmethods
1 FAILED TEST