Поскольку вы пытаетесь "протестировать некоторый код класса", я действительно рекомендую научиться использовать QTestLib . Он предоставляет пространство имен QTest и модуль QtTest , которые содержат ряд полезных функций и объектов, включая QSignalSpy , которые можно использовать для проверки того, что определенные сигналы излучаются .
Поскольку в конечном итоге вы будете интегрироваться с полным графическим интерфейсом, использование QTestLib и тестирование без ожидания или ожидания дадут вам более точный тест, который лучше отражает истинные шаблоны использования. Но если вы решите не идти по этому пути, вы можете использовать QTestLib :: qSleep , чтобы сделать то, что вы просили.
Поскольку вам просто нужна пауза между пуском насоса и его выключением, вы можете легко использовать таймер одиночного выстрела:
class PumpTest: public QObject {
Q_OBJECT
Pump &pump;
public:
PumpTest(Pump &pump):pump(pump) {};
public slots:
void start() { pump.startpump(); }
void stop() { pump.stoppump(); }
void stopAndShutdown() {
stop();
QCoreApplication::exit(0);
}
void test() {
start();
QTimer::singleShot(1000, this, SLOT(stopAndShutdown));
}
};
int main(int argc, char* argv[]) {
QCoreApplication app(argc, argv);
Pump p;
PumpTest t(p);
t.test();
return app.exec();
}
Но qSleep()
определенно будет проще, если все, что вас интересует, - это проверка нескольких вещей в командной строке.
РЕДАКТИРОВАТЬ : На основе комментария, вот необходимые шаблоны использования.
Во-первых, вам нужно отредактировать ваш .pro-файл, включив в него qtestlib:
CONFIG += qtestlib
Во-вторых, вам необходимо включить необходимые файлы:
- Для пространства имен QTest (которое включает в себя
qSleep
): #include <QTest>
- Для всех элементов в модуле
QtTest
: #include <QtTest>
. Это функционально эквивалентно добавлению включения для каждого элемента, который существует в пространстве имен.