Я пытаюсь использовать тест 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 не используется:
При возврате в qDebug для обеих функций запускаются только два теста:
Когда я пытаюсь запустить тесты по отдельности, тесты buttonPressed и GetCount не запускаются. Если я их отлаживаю, они запускаются и проходят.
Я неправильно настраиваю свои тесты для приложений qt?