C++ Google单元测试期望从exposer调用该方法
我正在尝试调用当前调用的受保护方法的C++ Google单元测试期望从exposer调用该方法,c++,unit-testing,googletest,C++,Unit Testing,Googletest,我正在尝试调用当前调用的受保护方法的EXPECT\u call。我已经创建了此方法的公开程序。然后,我在mock中添加了一个来自exposer的方法 TEST_F(ExposureGainController_Test, SetScale_call_SetExposureGain) { TEST_DESCRIPTION("Check logic behind SetScale and auto call of SetExposureGain. "); ExposureGainCo
EXPECT\u call
。我已经创建了此方法的公开程序。然后,我在mock中添加了一个来自exposer的方法
TEST_F(ExposureGainController_Test, SetScale_call_SetExposureGain)
{
TEST_DESCRIPTION("Check logic behind SetScale and auto call of SetExposureGain. ");
ExposureGainControllerExposer c(camMock, scaleFunctionMock,
std::unique_ptr<IMicroscopeOpticsParameters_ImageBrightness_Model>(new ImageBrightness_Model_Mock(0.5)));
EXPECT_CALL(*camMock, RunSetExposureGain()).Times(1);
c.SetScale(5.0);
}
//SetScale函数如下所示:
void ExposureGainController::SetScale(double scale)
{
if (m_scale != scale)
{
m_scale = scale;
m_gainInDb = ScaleToGainInDb(m_scale);
UpdateResidualScale();
SetExposureGain();
}
}
我正在尝试执行EXPECT\u CALL
,但无法正确运行它
我做错了什么?你说的“我不能正确地运行它”是什么意思?添加你的
SetScale
方法。啊,我可以运行它,但它没有调用提供的信息,看起来你的expect调用是错误的。您正在从测试中调用SetScale方法,并希望调用RunSetExposureGain。这似乎没有发生。
void ExposureGainController::SetScale(double scale)
{
if (m_scale != scale)
{
m_scale = scale;
m_gainInDb = ScaleToGainInDb(m_scale);
UpdateResidualScale();
SetExposureGain();
}
}