Estoy intentando iniciar la prueba unitaria. Estoy viendo algunos frameworks de C++ y quiero probar Boost.Test. La documentación parece muy minuciosa, y es un poco abrumadora, especialmente alguien nuevo en pruebas unitarias. Así que aquí está una situación que quiero:Ayuda para empezar a utilizar Boost.Test
Digamos que tengo 2 clases, Foo
y Bar
. Quiero escribir un conjunto de pruebas para Foo
y un conjunto de pruebas para Bar
, preferiblemente en diferentes archivos. Quiero ejecutar las pruebas solo si ejecuto el programa con un parámetro de línea de comando. Así que mi main()
debería ser algo como:
int main(int argc, const char* argv[])
{
if (argc == 1 && strcmp(argv[0], "-test") == 0)
run_all_tests();
else
return program_main(argc, argv);
}
Creo test_foo.cpp
debería ser algo como:
#include "foo.hpp"
#define BOOST_TEST_MODULE Foo test
#include <boost/test/unit_test.hpp>
BOOST_AUTO_TEST_SUITE(Foo_Test)
BOOST_AUTO_TEST_CASE(Foo1)
{
Foo f;
BOOST_CHECK(f.isValid());
}
BOOST_AUTO_TEST_CASE(Foo2)
{
Foo f;
BOOST_CHECK(f.baz() == 5);
}
BOOST_AUTO_TEST_SUITE_END()
Sin embargo, no sé (1) lo que el comando real para ejecutar las pruebas, es decir, y (2) cómo decir realmente a la biblioteca que quiero ejecutar CADA prueba.
Entonces, ¿quién tiene experiencia con Boost.Test? ¿Alguien puede ayudar de una manera detallada? Muchas gracias.
No entiendo ... ¿cómo se ejecuta el programa normalmente (sin pruebas)? – rlbond
básicamente su test_foo.cpp debe compilarse como un programa .exe único y vincularlo a su biblioteca que contiene clases Foo & Bar. Uno de los archivos de cabecera boost.test ya define la función principal, por lo que no creo que lo que usted propuso sea factible. – oscarkuo
Actualmente existe. Se llama console_test_runner. Aunque no es relevante para el problema de OP ya que ya tiene un main. –