Con el proyecto configurado con BUILD_TESTS=ON (por defecto):
mkdir build && cd build
cmake .. -DBUILD_TESTS=ON
cmake --build .
ctest --output-on-failureO ejecutar cada suite por separado:
./core_tests --log_level=message
./foundation_tests --log_level=message
./math_tests --log_level=message
./imageproc_tests --log_level=message
./qt_tests- ContentSpanFinder: detección de intervalos de contenido.
- DeskewParams: parámetros del filtro de enderezado.
- ImageId / PageId: identificación de imágenes y páginas, orden, subpáginas.
- Margins: márgenes y serialización XML.
- PageRange: rangos de páginas y selección alternada.
- SelectContentApply: aplicación del filtro de contenido.
- SmartFilenameOrdering: ordenación natural de nombres de archivo.
- Units: conversión y representación de unidades (px, mm, cm, in).
- Constants: constantes matemáticas (PI, conversiones DPI/DPM, grados/radianes).
- LineIntersectionScalar: intersección de líneas (escalares).
- Proximity: distancia entre puntos y punto-segmento.
- Utils: conversión numérica a cadena (locale independiente).
- Hessians (adiff): diferenciación automática.
- LineBoundedByRect: recorte de recta por rectángulo.
- LinearFunction / QuadraticFunction: funciones lineales y cuadráticas.
- MatrixCalc: operaciones matriciales.
- SidesOfLine: lado de una recta (puntos).
- SqDistApproximant: aproximación de distancia al cuadrado.
- BinaryImage, Binarize, Morphology, RasterOp, Scale, Shear, Transform, etc.
- Dpi: resolución (DPI) y serialización XML.
- Tests de lógica (TestCoreQt): Units, foundation::Utils, SmartFilenameOrdering, QSignalSpy (señales y argumentos).
- Tests de UX (TestUxQt):
- testButtonClickEmitsSignal: clic en
QPushButtonemiteclicked()(simulación conQTest::mouseClick). - testCheckBoxToggleChangesState: cambio de estado con
setCheckedy señaltoggled. - testLineEditAcceptsInput: entrada de texto con
QTest::keyClicksy comprobación del texto. - testCollapsibleGroupBoxStateAndSignal: widget del proyecto: estado colapsado/expandido y señal
collapsedStateChanged. - testErrorWidgetCreation: creación de
ErrorWidgety comprobación de hijos (sin mostrar ventana).
- testButtonClickEmitsSignal: clic en
Los tests de UX usan QApplication y pueden simular interacción (clic, teclado) sin abrir ventanas; sirven de base para ampliar con más widgets o diálogos.
Actualmente no hay tests automatizados de interfaz ni de flujos completos de uso. Para mejorar la cobertura de UX y caminos de uso se puede:
-
Qt Test: Añadir un ejecutable de tests que use
QTestpara:- Crear widgets/diálogos sin mostrar ventana.
- Simular eventos (clic, teclado) y comprobar estado.
-
Tests de integración: Scripts o tests que:
- Abran proyectos de ejemplo.
- Ejecuten filtros y comprueben resultados en disco o en memoria.
-
Tests E2E: Herramientas como Squish o scripts que controlen la aplicación gráfica (más costosos de mantener).
Para medir cobertura de código con gcov/lcov (solo compiladores que lo soporten):
cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTS=ON -DCMAKE_CXX_FLAGS="--coverage"
cmake --build .
ctest
lcov --capture --directory . --output-file coverage.info
lcov --remove coverage.info '/usr/*' --output-file coverage.info
genhtml coverage.info --output-directory coverage_htmlEn entornos sin Boost o sin dependencias de test:
cmake .. -DBUILD_TESTS=OFF