Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ gmock EXPECT_调用未调用测试类中的方法_C++_Testing_Gmock - Fatal编程技术网

C++ gmock EXPECT_调用未调用测试类中的方法

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

我不熟悉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
{
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