增加 void 函数的覆盖率,其中 else 分支只是一个打印,没有变量改变

Increase coverage for void functions where on else branch is just a print and no variables changed

我不得不测试一个类似于 foo():

的函数
class A{

.....  

void foo(int a)
{
        if( nullptr != m_member_name)
                m_member_mane->another_function();

        else Logger << "some message";
}

.....
Member_name *m_member_name;

}//end class A

为了覆盖分支,我认为我应该对 m_member_name != nullptr 进行一项测试,对 [=32= 进行一项测试] == nullptr.

对于第一个很简单,因为我希望 another_function() 被调用一次,使用

EXPECT_CALL(MOCK_Member_name, another_function())  
         .Times(1); // I created a mock for Member_name before

其中 MOCK_Member_name 是 Member_name

的模拟

但是我应该如何验证 for m_member_name == nullptr 是否在 else 分支上?

我知道这是一个愚蠢的问题,但我只研究了 Google Mock 很短的时间。

我研究了更多(请参阅 source 并且在这种特定情况下有最佳解决方案。

如果我想验证它是否继续在其他分支上,我应该期望使用 .Times(0);[= if 中的函数根本不会被调用20=]

EXPECT_CALL(MOCK_Member_name, another_function())  
         .Times(0); 

有关其他详细主题,请参阅:googletest-release-1.8.0-googlemock