Hug*_*ugo 5 c++ googletest assertions googlemock
我有这个(不是真的,只是一个简单的例子):
template<class T>
T foo() {...}
Run Code Online (Sandbox Code Playgroud)
我需要检查函数的结果类型(这里没有任何意义,我的例子更复杂,我保证),google test/mock是否支持这种断言?
我用A <T>尝试EXPECT_THAT,但我无法做到这一点.
谢谢.
Google Test 用于运行时测试。函数的类型是在编译时确定的,在 Google Test 介入之前。
您可以使用result_of并断言 typeid 值是相同的,如下所示:
EXPECT_EQ(typeid(int), typeid(std::result_of<foo<int>() >::type));
Run Code Online (Sandbox Code Playgroud)
另一种选择是放弃对返回类型的显式测试,而只使用预期使用的函数。如果返回类型有问题,编译器会在您尝试运行测试之前告诉您。无论如何,这可能比要求一种特定的返回类型更好;例如,如果返回类型结果不是long预期的int,但所有其他测试仍然通过,那么int一开始真的那么重要吗?