Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
每个测试用例在C++; P>是否有简单的方法知道在C++的Qt测试框架中消耗每一个测试用例的时间?p>_C++_Unit Testing_Qt_Qttest - Fatal编程技术网

每个测试用例在C++; P>是否有简单的方法知道在C++的Qt测试框架中消耗每一个测试用例的时间?p>

每个测试用例在C++; P>是否有简单的方法知道在C++的Qt测试框架中消耗每一个测试用例的时间?p>,c++,unit-testing,qt,qttest,C++,Unit Testing,Qt,Qttest,获得一些指标将非常有帮助。time\u t=time(0)将定义一个时间变量(以毫秒为单位),并将其设置为当前时刻。在测试前和测试后分别关闭其中一个,然后比较两个,以获得测试所用的时间。正如cbamber85所指出的,它根据许多事情而变化,因此如果你想让你的指标有任何意义,你需要保持你的平台稳定(即使这样,它们也只是作为一个相对的东西才有意义),但它至少是你可以使用的东西。time\u t=time(0)将定义一个时间变量(以毫秒为单位),并将其设置为当前时刻。在测试前和测试后分别关闭其中一个,

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

time\u t=time(0)将定义一个时间变量(以毫秒为单位),并将其设置为当前时刻。在测试前和测试后分别关闭其中一个,然后比较两个,以获得测试所用的时间。正如cbamber85所指出的,它根据许多事情而变化,因此如果你想让你的指标有任何意义,你需要保持你的平台稳定(即使这样,它们也只是作为一个相对的东西才有意义),但它至少是你可以使用的东西。

time\u t=time(0)将定义一个时间变量(以毫秒为单位),并将其设置为当前时刻。在测试前和测试后分别关闭其中一个,然后比较两个,以获得测试所用的时间。正如cbamber85所指出的,它根据许多事情而变化,因此如果你想让你的指标有任何意义,你需要保持你的平台稳定(即使这样,它们也只是相对的事情)但至少您可以使用它。

您可以编写一个自定义计时器类,它在创建时启动一个通常单调的运行计时器,并在删除时打印运行时间(请参阅):

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;
}
#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
}
...

您可以编写一个自定义计时器类,该类在创建时启动通常是单调的已用计时器,并在删除时打印已用时间(请参阅):

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;
}
#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
}
...

这取决于您的计算机、单元测试的复杂性、您的编译器和用于单元测试的编译器设置、同时运行的其他程序等。。。最好的(也是最有用的)方法就是记录每次测试所需的时间,并始终在同一台机器上进行测试,然后在更改代码时监控时间的变化。@cbamber85我想这正是我想做的。@Leems啊,我想他是在问我们需要多长时间…@cbamber85很好的信息。我一定会练习的。这取决于你的计算机、单元测试的复杂性、你的编译器和你在单元测试中使用的编译器设置、同时运行的其他程序等等。。。最好的(也是最有用的)方法就是记录每次测试所需的时间,并始终在同一台机器上进行测试,然后在更改代码时监控时间的变化。@cbamber85我想这正是我想做的。@Leems啊,我想他是在问我们需要多长时间…@cbamber85很好的信息。我一定要练习。或者你可以使用
QTime t=QTime::currentTime()
,它有一个很好的
toString
方法。(使用
toString(“hh:mm:ss.zzz”)
来包括毫秒)QTime不太可能是单调递增的,QeReleasedTimer更适合此工作,并且是专门为这种经过的计时而设计的。或者,您可以使用
QTime t=QTime::currentTime()
这是一种很好的
toString
方法。(使用
toString(“hh:mm:ss.zzz”)
来包括毫秒)QTime不太可能是单调递增的,而QeReleasedTimer更适合此工作,并且是专门为这种经过的计时而设计的。谢谢,这正是我要找的。@SantiagoAgüero很高兴我能提供帮助。请注意,库巴·奥伯改进了我的答案。您应该签出编辑的版本,并使用QElapsedTimer而不是QTime。(谢谢库巴·奥伯的编辑!)谢谢,这正是我想要的。@SantiagoAgüero很高兴我能帮上忙。请注意,库巴·奥伯改进了我的答案。您应该签出编辑的版本,并使用QElapsedTimer而不是QTime。(感谢库巴·奥伯的编辑!)