gMock方法声明参数类型不匹配

时间:2016-04-10 11:57:57

标签: c++ googletest googlemock gmock

我试图在类中模拟其中一个方法。 (Randomiser_MOCK.h

#include "../src/Randomiser.h"
#include "gmock/gmock.h"

class Randomiser_MOCK : public Randomiser {
  public:
    MOCK_METHOD0( getRand, unsigned long() );
    MOCK_METHOD2( setPoolRange, bool( const uint64_t &range_from, const uint64_t &range_to ) );
};

相关类的头文件(Randomiser.h)是:

class Randomiser {
  public:
    Randomiser();
    Randomiser( const Randomiser &randomiser );
    Randomiser( Randomiser &&randomiser );
    bool setPoolRange( const uint64_t &range_from, const uint64_t &range_to );
    unsigned long getRand();

  private:
    std::mt19937 _rng;
    std::uniform_int_distribution<uint64_t> _distribution;
};

我在IDE中得到这个: Result of the mock method declaration

这有点奇怪,因为我已经将方法签名从原始方法签名复制到模拟方法声明,而getRand()工作得很好(包括编译/运行)。 / p>

有人对此有所了解吗?

实际单元测试文件:

#include "gtest/gtest.h"
#include "gmock/gmock.h"
#include "Randomiser_MOCK.h"

#include "../src/Generator.h"
#include "../src/Generator.cpp"

TEST( Generator_Tests, create ) {
    Randomiser_MOCK r;
    using ::testing::Return;
    using ::testing::_;
    ON_CALL( r, getRand() ).WillByDefault( Return( 1 ) ); //All good here
    ON_CALL( r, setPoolRange(_,_) ).WillByDefault( Return( true ) );
    auto generator = Generator( r, "test_file" );
    generator.create();
    //....
}

0 个答案:

没有答案