Использование qDebug приводит к тому, что тест Google не запускается - PullRequest
1 голос
/ 06 мая 2020

Я пытаюсь использовать тест Google для QT Creator. Всякий раз, когда я пытаюсь запустить тест, который вызывает функцию, использующую qDebug, некоторые тесты не запускаются (0 пройдено, 0 не выполнено, ошибок нет). Тест пройдет нормально, если я удалю qDebug и вместо этого использую что-то вроде cout. Та же проблема возникает при запуске всех тестов или их индивидуальном запуске. Если я отлаживаю тест, он выполняется до конца, кажется, он ни на чем не зацикливается.

У меня есть класс, который создается как общая библиотека, которая представляет собой простое главное окно с кнопкой . Нажатие на кнопку просто увеличивает счетчик. Я добавил эту библиотеку в свой тестовый проект Google.

MainWindow.h

#ifndef MAINWINDOWLIB_H
#define MAINWINDOWLIB_H

#include "MainWindowLib_global.h"
#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MAINWINDOWLIB_EXPORT MainWindowLib : public QMainWindow
{
    Q_OBJECT
public:
    explicit MainWindowLib(QWidget *parent = nullptr);
    ~MainWindowLib();
    int getCounter();

private:
    Ui::MainWindow *ui;
    int counter = 0;

public slots:
    void button1Pressed();
};

#endif // MAINWINDOWLIB_H

MainWindow. cpp

#include "mainwindowlib.h"
#include "ui_mainwindowLib.h"

#include <iostream>

#include <QDebug>

MainWindowLib::MainWindowLib(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    connect(ui->pushButton, &QPushButton::clicked, this, &MainWindowLib::button1Pressed);
}

MainWindowLib::~MainWindowLib()
{
    delete(ui);
}

int MainWindowLib::getCounter()
{
//    qDebug() << "Counter is: " << this->counter;
    return this->counter;
}

void MainWindowLib::button1Pressed()
{
    this->counter++;
//    qDebug() << "Counter is: " << this->counter;
    std::cout << "Counter is: " << this->counter << std::endl;
}

Тесты:

TEST_F(TestClass1, dummyTest1)
{
    ASSERT_EQ(1, 1);
}

TEST_F(TestClass1, testGetCount)
{
    int argc = 0;
    char *argv[1] = {NULL};

    QApplication a(argc, argv);
    MainWindowLib myWindow;

    int count = myWindow.getCounter();
    ASSERT_EQ(count, 0);
}

TEST_F(TestClass1, testButtonPressed)
{
    int argc = 0;
    char *argv[1] = {NULL};

    QApplication a(argc, argv);
    MainWindowLib myWindow;

    emit myWindow.button1Pressed();
    int count = myWindow.getCounter();

    ASSERT_EQ(count, 1);
}

TEST_F(TestClass1, dummyTest2)
{
    ASSERT_EQ(4, 4);
}

Все тесты проходят, если qDebug не используется:

No qDebug

При возврате в qDebug для обеих функций запускаются только два теста:

with qDebug

Когда я пытаюсь запустить тесты по отдельности, тесты buttonPressed и GetCount не запускаются. Если я их отлаживаю, они запускаются и проходят.

Я неправильно настраиваю свои тесты для приложений qt?

...