Sto tentando di avviare il test dell'unità. Sto osservando alcuni framework C++ e voglio provare Boost.Test. La documentazione sembra molto approfondita, ed è un po 'schiacciante, specialmente qualcuno che è nuovo ai test unitari. Quindi, ecco una situazione che voglio:Per iniziare a utilizzare Boost.Test
Diciamo che ho 2 classi, Foo
e Bar
. Voglio scrivere una suite di test per Foo
e una suite di test per Bar
, preferibilmente in file diversi. Voglio eseguire i test solo se eseguo il programma con un parametro della riga di comando. Quindi il mio main()
dovrebbe essere simile:
int main(int argc, const char* argv[])
{
if (argc == 1 && strcmp(argv[0], "-test") == 0)
run_all_tests();
else
return program_main(argc, argv);
}
penso test_foo.cpp
dovrebbe essere qualcosa di simile:
#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()
Tuttavia, non so (1) quello che il comando effettivo per eseguire le prove è, e (2) come dire in realtà alla libreria che voglio eseguire OGNI test.
Quindi, chi ha esperienza con Boost.Test? Qualcuno può aiutare in modo dettagliato? Grazie mille.
Non capisco ... come si esegue il programma normalmente (senza test)? – rlbond
in pratica il tuo test_foo.cpp dovrebbe essere creato come un singolo programma .exe e link alla tua libreria che contiene le classi Foo & Bar. Uno dei file header di boost.test definisce già la funzione principale, quindi non penso che ciò che hai proposto sia fattibile. – oscarkuo
In realtà c'è. Si chiama console_test_runner. Anche se non è rilevante per il problema dell'OP poiché ha già un main. –