I am trying to start unit testing. I am looking at a few C++ frameworks and want to try Boost.Test. The documentation seems very thorough, and it's a bit overwhelming, especially someone new to unit testing. So here's a situation that I want:
Let's say I have 2 classes, Foo
and Bar
. I want to write a suite of tests for Foo
and a suite of tests for Bar
, preferably in different files. I want to run the tests only if I run the program with a command line parameter. So my main()
should look something like:
int main(int argc, const char* argv[])
{
if (argc == 1 && strcmp(argv[0], "-test") == 0)
run_all_tests();
else
return program_main(argc, argv);
}
I think test_foo.cpp
should be something like:
#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()
However, I don't know (1) what the actual command to run the tests is, and (2) how to actually tell the library that I want to run EVERY test.
So, who has experience with Boost.Test? Can someone help in a detailed way? Thank you so much.