c++ 如何使用google test测试调用同一类的void私有函数的public void函数

oewdyzsn  于 2022-11-27  发布在  Go
关注(0)|答案(2)|浏览(171)

伪代码:

void fun()
{
    while (m->hasMessage())
    {
        std::pair<std::string, Vector> msg_pair = m->getMessage();
        auto topic = msg_pair.first;
        auto msg = msg_pair.second;

        for (auto const& x : msg)
        {
            auto const type = m->MessageType(x);

            if (type == "a")
            {
                funa(x,topic);
            }
            else if (type == "b")
            {
                funb(x,topic);
            }
            
            else if (type == "c")
            {
                func(x,topic);
            }
        }
    }
}

fun a,fun B,fun c是私有函数,fun是同一类的公共函数如何使用google test测试函数fun

gdrx4gfi

gdrx4gfi1#

不应测试私有函数,而应测试公共接口
然而,如果你真的需要它,你可以使用这个(直接从谷歌测试文档...):
FRIEND_TEST(测试用例名称,测试名称);
比如说

class MyClass {
  friend class MyClassTest;
  FRIEND_TEST(MyClassTest, HasPropertyA);
  FRIEND_TEST(MyClassTest, HasPropertyB);
  ... definition of class MyClass ...
};
jhdbpxl9

jhdbpxl92#

我测试公共函数的方法是在私有函数中添加throw conditions(exceptions),并在测试用例中使用宏EXPECT_NOTHROW来测试公共函数:

EXPECT_NOTHROW(obj.publicfunction);

相关问题