0

有没有一种简单的方法可以知道 QT Test Framework for C++ 中每个测试用例消耗了多少时间?

获得一些指标将非常有帮助。

4

2 回答 2

2

您可以编写一个自定义 Timer 类,该类在创建时启动通常单调的经过计时器,并在删除时打印经过的时间(请参阅 参考资料QElapsedTimer::elapsed()):

计时器.h:

#include <QElapsedTimer>
class Timer {
public:
    Timer() {
        timer.start();
    }
    ~Timer() {
        qint64 ms = timer.elapsed();
        qDebug("Time needed: %s ms%s", ms,
               timer.isMontonic() ? "" : " (WARNING: non-monotonic)");
    }
private:
    QElapsedTimer timer;
}

使用QElapsedTimerover的好处QTime是 Qt 将尝试使用每个平台上最好的可用单调计时器。QTime不保证是单调的:时间同步守护进程/服务调整时钟等时会减少。

Timer t;现在在要测量时间的每个测试用例的开头插入该行;没有更多的代码。这只是创建一个Timer对象,该对象启动内部计时器,并在对象超出范围(在方法的末尾)时删除该对象,从而打印经过的时间:

您的测试用例(.cpp):

#include "timer.h"
...
void TestClass::myTestCase1()
{
    Timer t; //the only line needed to add to your test case

    ... //the code for test case
}
void TestClass::myTestCase2()
{
    Timer t; //the only line needed to add to your test case

    ... //the code for test case
}
...
于 2012-06-01T14:02:46.120 回答
1

time_t t = time(0);将定义一个自纪元以来以毫秒为单位的时间变量,并将其设置为当前时刻。在测试前关闭其中一个,在测试后关闭一个,然后比较两者以了解测试花费了多长时间。正如 cbamber85 所指出的,它会因许多事情而有所不同,因此如果您希望您的指标具有任何意义,您需要保持您的平台稳定(即使那样它们也只是相对而言才有意义),但这至少是一些事情你可以一起工作。

于 2012-06-01T13:11:25.493 回答