如何使用GoogleTest框架打印QString?

时间:2017-03-04 15:28:17

标签: qt5 googletest pretty-print qstring

我正在将GoogleTest(GTest)框架与Qt5应用程序结合使用。

每当使用QString参数进行测试失败时,框架会尝试打印所有涉及的值。但是,它无法自动处理外来类型(在这种情况下为Qt5&#39s的QString)。

QString test = "Test";
ASSERT_EQ(test, "Value");

enter image description here

如何让GoogleTest自动打印QStrings(=无需每次都手动转换它们)?

1 个答案:

答案 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名称空间中(或者通常位于名称空间中,其中应定义应该漂亮的类型)。

因此,GoogleTest现在可以打印出QStrings: enter image description here

您当然也可以添加一些引号,以便更清楚它来自QString:

*os << "\"" << qUtf8Printable(qString) << "\"";

资料来源:高级咨询工程师Justin Noel的网络研讨会ICS Qt Test-Driven Development Using Google Test and Google Mock