所以我正在使用Qt的QTest框架和"data driven" approach。我可以这样定义测试数据:
Q_DECLARE_METATYPE (const int*);
void MyTest::testSomething_data ()
{
QTest::addColumn<const int*> ("rawIntegerData");
// ...
}
现在我尝试使用const char*
代替const int*
...
Q_DECLARE_METATYPE (const char*);
void MyTest::testSomething_data ()
{
QTest::addColumn<const char*> ("rawTextData");
// ...
}
...我得到一个失败的静态断言:
const char* is not allowed as a test data format.
事实证明QTest :: addColumn 显式拒绝qtestcase.h中的const char*
。
我意识到QByteArray
可能是一个可行的选择,但我想知道:这里不允许const char *
的原因是什么?
答案 0 :(得分:3)
此更改的the commit消息:
中有一些评论澄清在测试中使用const char *作为TestData类型的断言。
目前所有C风格的字符串都用作QTest :: addColumn中的数据类型 将在运行时断言,例如:“const类型的预期数据 char *',使用tab'blah'“获得数据元素0的'QString'。这个 补丁清楚地表明不允许使用C风格的字符串。