C 全局静态变量googletest

C 全局静态变量googletest,c,googletest,C,Googletest,假设我们有以下代码片段 // myfile.c #include myfile.h static int global_static_value; bool check_it(int value) { if (global_static_value== value) { return true; } else { return false } } void set_value(int value) { global_static_value = va

假设我们有以下代码片段

// myfile.c
#include myfile.h

static int global_static_value;

bool check_it(int value) {
   if (global_static_value== value) {
    return true;
   } else {
    return false
   }
}

void set_value(int value) {
   global_static_value = value;
}

// myfile.h

bool check_it(int value)
void set_value(int value)
如何为函数编写google测试
bool check\u it(int value)
以测试
true
false
返回值


PS:不允许
#将myfile.c
包含到google测试中

只需编写一个帮助函数,允许您更改值。如果设计需要全局变量,那么它可能有缺陷。如果不想在生产代码中包含函数,可以使用
#ifdef google_测试
。设置此值的条件是什么?@Devolus不允许进行此类更改。确定。但是,您必须有一个设置该值的条件,否则该值没有意义,因此您可以将该条件强制到您想要的方向。在我看来,不应该为任何任意条件编写测试,而应该为用例场景编写测试。不管怎样,您有这个
set\u value
函数,因此您可以在测试设置中随时调用它。只需编写一个helper函数,允许您更改值。如果设计需要全局变量,那么它可能有缺陷。如果不想在生产代码中包含函数,可以使用
#ifdef google_测试
。设置此值的条件是什么?@Devolus不允许进行此类更改。确定。但是,您必须有一个设置该值的条件,否则该值没有意义,因此您可以将该条件强制到您想要的方向。在我看来,不应该为任何任意条件编写测试,而应该为用例场景编写测试。无论如何,您有这个
set\u value
函数,所以您可以在测试设置中调用它。
TEST_F(MyTestClass, MyTest)
{
    set_value(1);
    EXPECT_FALSE(check_it(2));
    EXPECT_TRUE(check_it(1));
}