CppUnit es un módulo de marco de pruebas unitarias para el lenguaje de programación C++ . Permite realizar pruebas unitarias de código fuente en C y C++ con una modificación mínima del código fuente. Fue creado alrededor del año 2000 por Michael Feathers como una adaptación de JUnit para Windows en C++ y posteriormente adaptado a Unix por Jerome Lacoste. [ 2 ] La biblioteca se distribuye bajo la Licencia Pública General Reducida de GNU . Sin embargo, a diferencia de JUnit, CppUnit no se basa en anotaciones (ya que estas no se añadieron a C++ hasta C++26 ), sino que crea pruebas con macros del preprocesador .
El marco ejecuta pruebas en suites. La salida del resultado de la prueba se envía a un filtro, el más básico es un simple recuento de aprobados o reprobados impreso, o filtros más avanzados permiten una salida XML compatible con sistemas de informes de integración continua . [ 3 ] El proyecto se ha bifurcado varias veces. [ 4 ] [ 5 ] La versión freedesktop.org en GitHub , mantenida por Markus Mohrhard del proyecto LibreOffice (que usa CppUnit intensamente), se mantuvo activamente hasta 2020 y se usa en distribuciones de Linux como Debian , Ubuntu , Gentoo y Arch . [ 6 ] Algunas bibliotecas, como POCO C++ Libraries , proporcionan sus propias API para consumir la biblioteca CppUnit.
Ejemplo
Consideremos la siguiente clase Integer:
módulo ;exportar módulo wikipedia.ejemplos.Entero ;exportar espacio de nombres wikipedia :: ejemplos {clase Entero { privado : int x = 0 ; público : Entero ( int x ) : x { x } {}[[ nodiscard ]] int add ( int y ) noexcept { x += y ; return x ; }[[ nodiscard ]] int subtract ( int y ) noexcept { x -= y ; return x ; } }}Se puede probar de la siguiente manera:
módulo ;exportar módulo wikipedia . ejemplos . pruebas . IntegerTest ;import < cppunit / extensions / HelperMacros . h > ; import wikipedia . examples . Integer ;using CppUnit :: TestFixture ; using wikipedia :: examples :: Integer ;exportar espacio de nombres wikipedia :: ejemplos :: pruebas {clase IntegerTest : público TestFixture { privado : CPPUNIT_TEST_SUITE ( IntegerTest );CPPUNIT_TEST ( testAdd ); CPPUNIT_TEST ( testSubtract );CPPUNIT_TEST_SUITE_END ();Integer * i ; protected : void testAdd () { CPPUNIT_ASSERT_EQUAL ( 8 , i -> add ( 8 )); // 5 + 3 = 8 }void testSubtract () { CPPUNIT_ASSERT_EQUAL ( 3 , i -> subtract ( 2 )); // 5 - 2 = 3 } public : void setUp () override { i = new Integer ( 5 ); }void tearDown () override { delete i ; } }Entonces, se puede probar en main():
importar < cppunit / ui / text / TestRunner . h > importar wikipedia . ejemplos . pruebas . Prueba entera ;usando CppUnit :: TextUi :: TestRunner ; usando wikipedia :: ejemplos :: pruebas :: IntegerTest ;int principal ( int argc , char * argv []) { TestRunner testRunner ; corredor . addTest ( IntegerTest :: suite ()); corredor . correr (); }Véase también
Lecturas adicionales
- Madden, Blake (6 de abril de 2006). "1.7: Uso de CPPUnit para implementar pruebas unitarias". En Dickheiser, Mike (ed.). Game Programming Gems 6. Charles River Media. ISBN 1-58450-450-1.
Referencias
- ↑ "Descripción de la confirmación" .
- ↑ Mohrhard, Markus. "Documentación de CppUnit" . freedesktop.org.
- ↑ Complemento de Jenkins para CppUnit y otras herramientas de prueba unitaria
- ↑ bifurcación de freedesktop.org presentada como CppUnit v1.13
- ↑ bifurcación presentada como CppUnit2; no se ha modificado desde 2009.
- ↑ Mohrhard, Markus (22 de octubre de 2013). "cppunit framework" . Lista de correo de LibreOffice . Recuperado el 20 de marzo de 2014 .
Enlaces externos
- Bibliotecas de C++
- Programación extrema
- Freedesktop.org
- marcos de pruebas unitarias