【发布时间】:2016-05-20 12:25:17
【问题描述】:
我正在这里使用 googletest/googlemock 编写 C++ 生产代码。在使用 A.cpp 中的一个函数时,我偶然发现了这个想法:
bool A::process_(false);
bool A::process()
{
if ( !process_ ){
process_ = true;
}
return process_;
}
标头包含的位置:
protected:
static bool process_;
public:
static bool process();
我被困在一种方式中,我只能测试函数的预期输出 true 或 false 输入,如下所示:
TEST(ATest, processVal){
A a;
EXPECT_TRUE(a.process());
}
有没有办法测试函数,以便通过 process_ 的 *true* 和 *false* 值?这样测试就涵盖了两者的决定。
我在考虑模拟,以便它可以期待对 true 和 false 的调用,但因为它不是类成员中的函数,我猜你不能对 process_ 进行模拟?
如果可以,如何模拟变量?
注意:我使用的是 linux 和 gcc :) 谢谢!
【问题讨论】:
-
您是否正在寻找从测试中修改
process_的方法? -
我当前的目标:在不更改任何生产代码的情况下,在函数“process()”中为“if 语句”做出正确和错误的决定。换句话说,在不使用 googletest 更改生产代码的情况下,测试/涵盖 true 和 false 的 if 语句,而不是仅 false。
-
检查我的答案,它将允许测试代码修改
_process,而无需在生产代码中进行任何更改。
标签: c++ linux unit-testing googletest