直接看代码
#include <gtest/gtest.h>
#include <gmock/gmock.h>using ::testing::Return;
using ::testing::_;template<typename T>
class mockFoo{
public:static mockFoo& GetInstance(){static mockFoo instance;return instance;}MOCK_METHOD(T, bar, (const T&), ());
protected:mockFoo() = default;~mockFoo() = default;mockFoo(const mockFoo&) = delete;mockFoo& operator=(const mockFoo&) = delete;
};class fooTest : public ::testing::Test {
protected:void SetUp() override {}void TearDown() override {}
};TEST_F(fooTest, fooTest1){auto& ins = mockFoo<int>::GetInstance();EXPECT_CALL(ins, bar(_)).WillOnce(Return(42));EXPECT_EQ(ins.bar(1), 42);
}int main(int argc, char** argv) {::testing::InitGoogleTest(&argc, argv);return RUN_ALL_TESTS();
}
红帽系安装gtest:
sudo dnf install gtest gtest-devel gmock-devel
编译:
g++ -std=c++17 main.cpp -lgtest -lgmock -lpthread -o test