Puesto que usted está tratando de "probar algo de código de clase," Yo realmente recomiendo aprender a usar QTestLib. Proporciona un QTest namespace y un QtTest module que contienen una serie de funciones y objetos útiles, incluido QSignalSpy, que puede usar para verificar que se emitan ciertas señales.
Dado que eventualmente se integrará con una GUI completa, el uso de QTestLib y la prueba sin dormir ni esperar le dará una prueba más precisa, una que representa mejor los verdaderos patrones de uso. Pero, si decide no seguir esa ruta, puede usar QTestLib::qSleep para hacer lo que ha solicitado.
ya que sólo se necesita una pausa entre el comienzo de la bomba y apagarlo, se puede utilizar fácilmente un único temporizador de disparo:
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();
}
Pero qSleep()
sin duda sería más fácil si todo lo que le interesa es verificar un par de cosas en la línea de comando.
EDIT: Según el comentario, aquí se muestran los patrones de uso necesarios.
En primer lugar, es necesario modificar el archivo .pro para incluir qtestlib:
CONFIG += qtestlib
En segundo lugar, es necesario incluir los archivos necesarios:
- Para el espacio de nombres QTest (que incluye
qSleep
) : #include <QTest>
- Para todos los elementos en el módulo
QtTest
: #include <QtTest>
. Esto es funcionalmente equivalente a agregar una inclusión para cada elemento que existe dentro del espacio de nombres.
¿Qué exactamente estás probando? ¿Qué significa agregar 'wait()' o 'sleep()'? –
Estoy creando una clase para conducir una bomba peristáltica utilizando comandos serie RS232. He creado una GUI en QT, pero mientras tanto solo estoy probando las funciones que he creado desde una función main() dentro de la consola. Por lo tanto, quiero que la clase sea compilada por QT pero al mismo tiempo quiero mypump.startpump(); dormir (1000); mypump.stoppump(); por ejemplo. solo para probarlo funciona – Zac
A pesar de compilar con QT, estoy usando la consola CONFIG + = para ejecutar y enviar cadenas de depuración a la consola. – Zac