我遇到了MockInterfaceTest.MockTest问题 未知文件:错误:C ++异常,描述为“ 模拟函数没有设置默认操作,返回类型也没有设置默认值。”测试主体中抛出了任何人。有人可以解释为什么会出现这种情况吗?我用Google搜索了一下,但没有找到任何东西。
#include "pch.h"
#include "gtest/gtest.h"
#include "gmock/gmock.h"
#include "../../StaticLib1/StaticLib1/SysProps.h"
class MockTest : public PropertyInterface
{
public:
MOCK_METHOD0(getComputerName, TCHAR*());
MOCK_METHOD0(getSysDirectory, TCHAR*());
MOCK_METHOD0(getUserName, TCHAR*());
MOCK_METHOD0(getWindowsDir, TCHAR*());
MOCK_METHOD0(getHardwareValue, SYSTEM_INFO());
};
using ::testing::_;
TEST(MockInterfaceTest, MockTest)
{
MockTest mt;
EXPECT_CALL(mt, getComputerName()).Times(1);
EXPECT_CALL(mt, getSysDirectory()).Times(1);
EXPECT_CALL(mt, getUserName()).Times(1);
EXPECT_CALL(mt, getWindowsDir()).Times(1);
EXPECT_CALL(mt, getHardwareValue()).Times(1);
mt.getComputerName();
mt.getSysDirectory();
mt.getUserName();
mt.getWindowsDir();
mt.getHardwareValue();
}
int main(int argc, char** argv) {
::testing::InitGoogleMock(&argc, argv);
return RUN_ALL_TESTS();
}
答案 0 :(得分:0)
您没有提供要嘲笑的功能的签名(头文件PropertyInterface
和SYSTEM_INFO
的类型定义将非常有用)。
仍然,仅从错误消息和MOCK
声明的形式开始,我猜测,对于gtest,SYSTEM_INFO
类型没有可用的默认构造函数。
由于您没有指定调用MOCK
(以及其他任何模拟函数)时getHardwareValue()
究竟应返回什么,它会尝试返回默认的构造值(作为后备),但是由于没有办法创建“默认” SYSTEM_INFO
,它会在万不得已时抛出异常。