我正在将GoogleTest(GTest)框架与Qt5应用程序结合使用。
每当使用QString参数进行测试失败时,框架会尝试打印所有涉及的值。但是,它无法自动处理外来类型(在这种情况下为Qt5&#39s的QString)。
QString test = "Test";
ASSERT_EQ(test, "Value");
如何让GoogleTest自动打印QStrings(=无需每次都手动转换它们)?
答案 0 :(得分:11)
GoogleTest指南解释了一般teach the framework如何处理自定义类型。
最后,为了能够使用QStrings,GoogleTest需要添加以下代码片段:
QT_BEGIN_NAMESPACE
inline void PrintTo(const QString &qString, ::std::ostream *os)
{
*os << qUtf8Printable(qString);
}
QT_END_NAMESPACE
此代码不得位于测试装置的名称空间中,但必须位于Qt名称空间中(或者通常位于名称空间中,其中应定义应该漂亮的类型)。
您当然也可以添加一些引号,以便更清楚它来自QString:
*os << "\"" << qUtf8Printable(qString) << "\"";
资料来源:高级咨询工程师Justin Noel的网络研讨会ICS Qt Test-Driven Development Using Google Test and Google Mock