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); }
引用地址函數