为什么QTest不允许const char *作为测试数据格式?

时间:2016-06-14 09:06:01

标签: c++ qt unit-testing

所以我正在使用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 *的原因是什么?

1 个答案:

答案 0 :(得分:3)

此更改的the commit消息:

  

澄清在测试中使用const char *作为TestData类型的断言。

     

目前所有C风格的字符串都用作QTest :: addColumn中的数据类型   将在运行时断言,例如:“const类型的预期数据   char *',使用tab'blah'“获得数据元素0的'QString'。这个   补丁清楚地表明不允许使用C风格的字符串。

Code Review here

中有一些评论