gtest ASSERT_TRUE和EXPECT_TRUE


調用ASSERT_TRUE的函數,返回值類型定義必須是void,如果想返回別的類型,就用EXPECT_TRUE:

void abc::fun()
{
    ASSERT_TRUE(fun1());
}

bool abc::fun()
{
    bool result = fun1();
    EXPECT_TRUE(result );
    return result ;
}
ASSERT_TRUE is a macro. When expanded it will contain a branch like:

if (fun1() == false) {
   return;
}
This is how ASSERT_TRUE does a hard stop on failure, but it also means that your method bool abc::fun() now has a void return exit path, in conflict with its signature.

Possible fixes include don't use hard stop asserts:

bool abc::fun(){
    bool result = fun1();
    EXPECT_TRUE(result); //No return in expansion
                         //No hard stop!
    return result;
}
or change your methods return type if not needed:

void abc::fun(){
    ASSERT_TRUE(fun1()); //Hard stop on failure
}
or return by reference:

void abc::fun(bool &outResult){
   outResult = fun1();  //return result by reference
   ASSERT_TRUE(result);
}

引用地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM