有没有一种简单的方法可以知道QT Test Framework for C ++中每个测试用例需要多少时间?
获得一些指标会非常有帮助。
答案 0 :(得分:2)
你可以编写一个自定义Timer类,它在创建时启动一个通常单调的经过时间,并打印删除时经过的时间(见QElapsedTimer::elapsed()
):
<强> timer.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;
}
使用QElapsedTimer
优于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
}
...
答案 1 :(得分:1)
time_t t = time(0);
将定义自纪元以来以毫秒为单位的时间变量,并将其设置为当前时刻。在测试之前将其中一个关闭,一个在测试之后,并将两者进行比较以获得测试花费的时间。正如cbamber85所指出的,它根据许多因素而有所不同,所以如果你希望你的指标具有任何意义,你需要保持你的平台稳定(即使那时它们只是作为一个相对的东西而重要)但它至少是一些东西你可以使用。