Comencé a escribir algunas pruebas con el sistema de pruebas unitarias de Qt.Prueba con el módulo QTestLib de Qt
¿Cómo sueles organizar las pruebas? ¿Es una clase de prueba por clase de módulo o prueba todo el módulo con una única clase de prueba? Qt docs sugieren seguir la estrategia anterior.
Quiero escribir pruebas para un módulo. El módulo proporciona solo una clase que va a ser utilizada por el usuario del módulo, pero hay mucha lógica abstraída en otras clases, que también me gustaría probar, además de probar la clase pública.
El problema es que la forma propuesta de Qt para ejecutar las pruebas consistió en la QTEST_MAIN
macro:
QTEST_MAIN(TestClass)
#include "test_class.moc"
y, finalmente, un programa de prueba es capaz de probar sólo una clase de prueba. Y es una mierda para crear proyectos de prueba para cada clase en el módulo.
Por supuesto, uno podría echar un vistazo a la macro QTEST_MAIN
, reescribirla y ejecutar otras clases de prueba. Pero, ¿hay algo que funcione de la caja?
Hasta ahora lo hago con la mano:
#include "one.h"
#include "two.h"
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
TestOne one;
QTest::qExec(&one, argc, argv);
TestOne two;
QTest::qExec(&two, argc, argv);
}
Tenga en cuenta que si escribe pruebas como esa, el complemento AutoTest de Qt Creator no las encontrará ni las ejecutará (solo las descubrí) mientras busca las macros "QTEST_MAIN", "QTEST_APPLESS_MAIN" y "QTEST_GUILESS_MAIN". Ver detalles [aquí] (https://gist.github.com/oranja/c032d7f77becca18137d49251e791593). – mBardos