QTEST_MAIN 不使用提供的测试类

QTEST_MAIN doesn't use provided Testclass

我想对线程及其交互(例如共享数据)进行性能测试。为此,我尝试了 Qt 提供的基准测试教程,这让我编写了以下代码。

基准-Class:

class Bm : public QObject
{
     Q_OBJECT
private slots:
    void Benchmark_1()
    {
        bm_1 bm;
        QBENCHMARK
        {
            pool.start(&bm);         //pool is a QThreadpool
            pool.start(&bm);
            pool.waitForDone();
        }

    }
    void Benchmark_2()
    {
        bm_1 b_1; bm_2 b_2;
        QBENCHMARK
        {
            pool.start(&b_1);
            pool.start(&b_2);
            pool.waitForDone();
        }
    }
};

包含线程任务的class:

class bm_1 : public QRunnable         //bm_2 looks just like bm_1
{
public:
    void test_1();
    void run()
    {
        test_1();
    }
};

主函数被 QTest 宏替换:

QTEST_MAIN(Bm)

QTEST_MAIN returns 0,这意味着,根据 Qt 文档,没有要测试的内容。如果我现在尝试使用调试器来大致了解可能出现的问题,我会收到两个启动错误:

The Gdb-process was terminated(0)

During startup program exited with code 0xc0000138

我做错了什么?

我需要 QTest(而不是 ellapsedTimer)来衡量没有 OS 和 adobe updater 污染的性能。这是公司拥有的笔记本电脑。我检查了我的包含,我什至重新安装了 Qt。

我发现我做错了。 包含我的基准的 class 称为 Bm,实现它的文件称为 benchmar.cppbenchmark.h。将 class 的名称更改为 benchmark 解决了问题。

为什么那是我不知道的,我阅读 QObject 4.8 文档并没有让我更进一步。 Soo... 又一个怪癖。

哇哦!