Я пытаюсь начать модульное тестирование. Я рассматриваю несколько фреймворков С++ и хочу попробовать Boost.Test. Документация кажется очень тщательной, и она немного подавляющая, особенно кто-то новый для модульного тестирования. Итак, вот ситуация, в которой я хочу:
Скажем, у меня есть 2 класса, Foo
и Bar
. Я хочу написать набор тестов для Foo
и набор тестов для Bar
, желательно в разных файлах. Я хочу запускать тесты только в том случае, если я запускаю программу с параметром командной строки. Поэтому мой main()
должен выглядеть примерно так:
int main(int argc, const char* argv[])
{
if (argc == 1 && strcmp(argv[0], "-test") == 0)
run_all_tests();
else
return program_main(argc, argv);
}
Я думаю, что test_foo.cpp
должен выглядеть примерно так:
#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()
Однако я не знаю (1), какова фактическая команда для запуска тестов, и (2) как фактически сказать библиотеке, что я хочу запустить КАЖДЫЙ тест.
Итак, у кого есть опыт работы с Boost.Test? Может ли кто-нибудь помочь детально? Большое вам спасибо.