В настоящее время я тестирую приложение Qt. Я должен построить тест для проверки правильности ввода и вывода файлов csv.Qt test Как прекратить выполнение при выходе сигнала
Проблема:
Данные считываются асинхронно и моя тестовая программа заканчивается до загрузки данных, и это выход я получаю.
QFATAL: Received signal 11
FAIL! : Received a fatal error
потока программы:
Существует класс AsyncLoader, который загружает данные. По завершении чтения данных он выдает завершенный() сигнал.
Итак, я модифицировал тестовую программу, чтобы включить QEventLoop. Код показан ниже
#pragma once
#include <QEventLoop>
#include <QSignalSpy>
#include "asyncloader.h"
#include "alphaevent.h"
#include "mainwindow.h"
#include <QtTest/QtTest>
class Test1: public QObject
{
Q_OBJECT
private slots:
void initTestCase();
void mainWindowTester();
void cleanupTestCase();
};
void Test1::initTestCase()
{
qDebug()<<"hello";
}
void Test1::mainWindowTester()
{
AlphaEvent *fs1 = new AlphaEvent(this);
fs1->setOperation(AlphaEvent::FileOpen);
fs1->setPath(QString("/home/user/PC5.csv"));
MainWindow *mw1 = new MainWindow();
QEventLoop loop;
loop.connect(mw1, SIGNAL(completed(FileEvent*)), SLOT(quit()));
mw1->dataSetIORequest(fs1);
loop.exec();
int pqr = mw1->_package->dataSet->rowCount();
int pqr1 = mw1->_package->dataSet->columnCount();
qDebug() << "pqr== "<< pqr;
qDebug() << "-----------------------------------------------";
QVERIFY(pqr==5);
void Test1::cleanupTestCase()
{
}
QTEST_MAIN(Test1)
#include "test1.moc"
Но с этим, я получаю «подпроцесс ошибка: FailedToStart»
Есть ли способ, чтобы проверить асинхронный блок?
Я использую Qt версии 5.4.2, QMAKE версии 3.0
вы бы рассмотреть возможность использования рамок модульного тестирования, как GTEST? – gda2004
@ gda2004, я раньше не пытался использовать google-тест с qt-приложением. Дайте ему шанс, если это не сработает – akashrajkn
@askshrajkn В настоящее время я использую gtest с фреймворком qt, вам просто нужно реорганизовать свой код, чтобы слот был минимальным вызовом функции или метода. Затем вы можете написать тест с использованием gtest. Это может помочь вам изолировать проблему. – gda2004