Boost logo

Boost Users :

Subject: [Boost-users] Boost.Test: How to create a multi-module (multi-file) test suite or how to link multiple auto test cases into one executable?
From: Leonid Shlyapnikov (lshlyapnikov_at_[hidden])
Date: 2009-02-22 10:55:06


Hi everybody!

I got a bit rusty with C++. Can someone help me to understand how I
can create a Boost.Test suite that contains test cases from multiple
modules (multiple cpp files)?

Lets say I have:

file: ATest.cppp:
-----------------------------------------------------------------------
#define BOOST_TEST_MODULE ATest
#include <boost/test/included/unit_test.hpp>

BOOST_AUTO_TEST_CASE(testA1) {
    ....
}

BOOST_AUTO_TEST_CASE(testA2) {
    ....
}
-----------------------------------------------------------------------

file: BTest.cppp:
-----------------------------------------------------------------------
#define BOOST_TEST_MODULE BTest
#include <boost/test/included/unit_test.hpp>

BOOST_AUTO_TEST_CASE(testB1) {
    ....
}

BOOST_AUTO_TEST_CASE(testB2) {
    ....
}
-----------------------------------------------------------------------

Compilation passes all right. Linker gives:

In function `boost::unit_test::output::compiler_log_formatter::log_finish(std::basic_ostream<char,
std::char_traits<char> >&)':
/usr/include/c++/4.2/bits/char_traits.h:291: multiple definition of
`boost::unit_test::output::compiler_log_formatter::log_finish(std::basic_ostream<char,
std::char_traits<char> >&)'

I understand this error (even after 3-4 years of only Java :).

So, question: Is there any way to link multiple auto test cases into
one executable file? I have not found any information on this. Does it
mean that if I want to have one executable that runs all my test cases
I need to put/include all test case definitions into one cpp file?

Thanks a lot,
Leonid Shlyapnikov


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net