Hi,
Scenario1:
Both files are present in the same Project BoostUnitTest.
fileA:
typedef boost::mpl::list<long long,unsigned char> test_types;
BOOST_AUTO_TEST_SUITE(MySuite)
BOOST_AUTO_TEST_CASE_TEMPLATE( my_test, T, test_types )
{
BOOST_CHECK_EQUAL( sizeof(T), (unsigned)4 );
}
BOOST_AUTO_TEST_SUITE_END()
fileB:
typedef boost::mpl::list<long long,unsigned char> test_types;
BOOST_AUTO_TEST_SUITE(MySuite)
BOOST_AUTO_TEST_CASE_TEMPLATE( my_test, T, test_types )
{
BOOST_CHECK_EQUAL( sizeof(T), (unsigned)4 );
}
BOOST_AUTO_TEST_SUITE_END()
As shown above, MySuite is extended across 2 files fileA and fileB. The BOOST_AUTO_TEST_CASE_TEMPLATE name is same across the both the files and and
the suite name is also same across both the files..
Boost is able to differentiate between the 2 test cases and the test cases are executed.
Scenario2:
fileA:
BOOST_AUTO_TEST_SUITE(MySuite)
BOOST_AUTO_TEST_CASE( my_test)
{
BOOST_CHECK_EQUAL(1,1);
}
BOOST_AUTO_TEST_SUITE_END()
fileB:
BOOST_AUTO_TEST_SUITE(MySuite)
BOOST_AUTO_TEST_CASE_TEMPLATE( my_test )
{
BOOST_CHECK_EQUAL( 1,1 );
}
BOOST_AUTO_TEST_SUITE_END()
In the scenario2, I get a compile time error (Error 1 error LNK2005: "public: void __thiscall mySuite::insuite2::test_method(void)" (?test_method@insuite2@mySuite@@QAEXXZ) already defined in BoostUnitTest.obj)
which basically suggests that one or more multiply defined symbols are found.
Why is the behaviour different in these 2 scenarios? How is Boost able to differenciate between the 2 test cases in Scenario1?
Mit freundlichen Grüßen / Best Regards,
Hemanth Choudary MV
RBEI/ETA1