我将 GoogleTest (GTest) 框架与 Qt5 应用程序结合使用。
每当使用 QString 参数的测试失败时,框架就会尝试打印所有涉及的值。但是,它无法自动处理外部类型(本例中为 Qt5 的 QString)。
QString test = "Test";
ASSERT_EQ(test, "Value");
如何让 GoogleTest 自动漂亮地打印 QString(= 无需每次手动转换它们)?
GoogleTest 指南解释了一般情况下如何进行教授框架 https://de.slideshare.net/ICSinc/webinar-qt-testdriven-development-using-google-test-and-google-mock处理自定义类型。
最后,为了让 GoogleTest 能够使用 QStrings,需要添加以下代码片段:
QT_BEGIN_NAMESPACE
inline void PrintTo(const QString &qString, ::std::ostream *os)
{
*os << qUtf8Printable(qString);
}
QT_END_NAMESPACE
此代码不得位于测试装置的命名空间中,而必须位于 Qt 命名空间中(或者通常位于定义应漂亮打印的类型的命名空间中)。
此代码还必须可以从您在该特定类型上调用 GoogleTest 断言的所有翻译单元中查看,否则它将不会被使用(请参阅注释)。
As a result GoogleTest now pretty prints QStrings:
当然,您也可以添加一些引号以使其更清楚地表明它来自 QString:
*os << "\"" << qUtf8Printable(qString) << "\"";
来源:网络研讨会使用 Google Test 和 Google Mock 进行 ICS Qt 测试驱动开发 https://de.slideshare.net/ICSinc/webinar-qt-testdriven-development-using-google-test-and-google-mock作者:Justin Noel,高级咨询工程师
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)