gpt4 book ai didi

qt - 如何使用 GoogleTest 框架漂亮地打印 QString?

转载 作者:行者123 更新时间:2023-12-04 00:05:42 24 4
gpt4 key购买 nike

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

每当使用 QString 参数的测试失败时,框架都会尝试打印所有涉及的值。但是,它不能自动处理外部类型(在这种情况下是 Qt5 的 QString)。

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

enter image description here

如何让 GoogleTest 自动漂亮地打印 QStrings(= 不必每次都手动转换它们)?

最佳答案

GoogleTest 指南解释了您一般如何做 teach the framework处理自定义类型。

最后,为了让 GoogleTest 能够使用 QStrings,需要添加以下代码片段:

QT_BEGIN_NAMESPACE
inline void PrintTo(const QString &qString, ::std::ostream *os)
{
*os << qUtf8Printable(qString);
}
QT_END_NAMESPACE

这段代码不能在你的测试装置的命名空间中,而必须在 Qt 命名空间中(或者通常在定义应该 pretty-print 的类型的命名空间中)。
此代码也必须可从所有翻译单元中查看,在该单元中您对该特定类型调用 GoogleTest 断言,否则将无法使用(请参阅评论)。

结果 GoogleTest 现在可以漂亮地打印 QStrings:
enter image description here

您当然也可以添加一些引号以使其更清楚地来自 QString:
*os << "\"" << qUtf8Printable(qString) << "\"";

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

关于qt - 如何使用 GoogleTest 框架漂亮地打印 QString?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42597726/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com