prueba c++ con catch2
Resumen
En este artículo explicaré cómo usar catch2
para hacer pruebas unitarias.
Cómo construir
Para compilar las fuentes, debe descargar una versión de https://github.com/catchorg/Catch2/tags. Ahora puedes compilar la fuente con gcc. El siguiente fragmento de código mostrará el cmake script
para compilar.
#Please set the environment variables to your needs
cmake \
-G "Unix Malkefiles" \
-D CMAKE_BUILD_TYPE=Release \
-D BUILD_TESTING=OFF \
-D BUILD_SHARED_LIBS=ON \
-D "CMAKE_STAGING_PREFIX=${CMAKE_STAGING_PREFIX}" \
-D "CMAKE_INSTALL_PREFIX=${CMAKE_STAGING_PREFIX}" \
-D BUILD_TESTS=OFF \
-S "${SOURCE_DIRECTORY}" \
-B "${BUILD_DIRECTORY}"
cmake --build "${BUILD_DIRECTORY}" --target install
Integrar en la estructura del proyecto
Estructura de proyecto recomendada:
|-- project
|----CMakeLists-txt
|----test
|------cmake
|--------Catch.cmake
|--------CatchAddTests.cmake
|--------FindCatch2.cmake
|--------ParseAndAddCatchTests.cmake
|------Main.cpp
|------ExampleTest1.cpp
|------ExampleTest2.cpp
|------CMakeLists.txt
Configuración en CMakeLists.txt
del proyecto
include(CTest)
target_compile_definitions(${TARGET} PRIVATE
TEST_DATA_PATH="${PROJECT_SOURCE_DIR}/data")
//set environment variable to ON if you want to enable testing
if (BUILD_TESTING)
enable_testing()
add_subdirectory(test)
endif()
Configuración en CMakeLists.txt
del directorio de prueba.
cmake_minimum_required(VERSION 3.13)
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/test/cmake")
set (WILDCARD_SOURCE *.cpp)
file(GLOB_RECURSE TEST_SOURCES ${WILDCARD_SOURCE})
add_executable(${TARGET_TEST} ${TEST_SOURCES})
find_package(Catch2 REQUIRED)
# Link to the desired libraries
target_link_libraries(${TARGET_TEST}
PRIVATE
Catch2::Catch2
...
)
target_compile_definitions(DcmlParserTest PRIVATE
TEST_DATA_PATH="${PROJECT_SOURCE_DIR}/data")
include(ParseAndAddCatchTests)
ParseAndAddCatchTests(${TARGET_TEST})
Cómo usar
Principal.cpp
#define CATCH_CONFIG_MAIN
#include <catch2/catch.hpp>
EjemploPrueba.cpp
Este ejemplo muestra cómo probar con SCENARIOS
.
#include <catch2/catch.hpp>
#ifndef DATA_PATH
#define DATA_PATH "/tmp/data"
#endif
SCENARIO("testcase", "")
{
GIVEN("usercase 1")
{
WHEN("instance is created")
{
THEN("test properties")
{
//check if true
REQUIRE(...);
/check if no exception
REQUIRE_NOTHROW(...);
}
}
}
}
EjemploPrueba2.cpp
Este ejemplo muestra cómo probar con TEST_CASE
.
#include <catch2/catch.hpp>
#ifndef DATA_PATH
#define DATA_PATH "/tmp/data"
#endif
TEST_CASE( "TestCase1", "" ) {
REQUIRE( 1 == 1 );
}
TEST_CASE( "Testcase2", "" ) {
REQUIRE( 3 != 1 );
}
Nota especial para las aplicaciones PLCnext
Para usar catch2
como marco de prueba, debe excluir el contenido ARP. Tienes que compilar tu código con el compilador gcc local. Con esta configuración, puede probar su código no ARP localmente.
Más información
Si está interesado en obtener más información sobre catch2
puedes consultar el siguiente enlace:
- GitHub:https://github.com/catchorg/Catch2
Licencia
La biblioteca se publica bajo la licencia de software Boost 1.0
Tecnología Industrial
- Agregue SaaS y seguridad en la nube con pruebas y automatización
- Operadores de C++
- C++ do...while bucle con ejemplos
- Declaración de caso de cambio de C ++ con EJEMPLO
- C++ Asignación dinámica de arreglos con ejemplo
- Punteros de C++ con ejemplos
- Tipo de datos Char de C++ con ejemplos
- Sobrecarga de operadores de C++ con ejemplos
- Estructura C++ con ejemplo
- std::list en C++ con ejemplo
- Funciones de C++ con ejemplos de programas