Базовый класс для всех ваших тестовых классов - CppUnit::TestFixture
, вы можете переопределить некоторые функции, такие как setUp
и tearDown
, чтобы инициализировать ваши тестовые объекты и удалить их.
Предположим, у вас есть тестовый классс именем MyFirstTest
, чтобы зарегистрировать тестовые функции в Cpp Framework, вам нужно будет сделать:
CPPUNIT_TEST_SUITE(MyFirstTest);
CPPUNIT_TEST(myTestFunction);
... //any other function you want to register with appropriate macros
CPPUNIT_TEST_SUITE_END();
Также вам нужно будет зарегистрировать каждый тестовый класс (в соответствующем заголовке или файле cpp)
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(MyFirstTest, "YouTestName");
Как только ваш тестовый класс настроен, вы можете его запустить.Основная функция будет выглядеть следующим образом:
bool wasSuccessful = false;
try
{
CppUnit::TextUi::TestRunner runner;
runner.setOutputter( new CppUnit::CompilerOutputter(&runner.result(), std::cerr));
CppUnit::TestFactoryRegistry ®istry = CppUnit::TestFactoryRegistry::getRegistry("YouTestName");
runner.addTest(registry.makeTest());
wasSuccessful = runner.run("", false);
}
catch(const std::exception& e)
{
std::cerr << e.what() << std::endl;
wasSuccessful = false;
}
Если вы хотите добавить больше тестовых классов, основная функция останется прежней.Вы просто создаете тестовый класс (производный от этого CppUnit::TestFixture
класса), регистрируете свои методы, и важным шагом является регистрация вашего класса в фреймворке с использованием CPPUNIT_TEST_SUITE_NAMED_REGISTRATION
.Метод getRegistry
, используемый в функции main
, получит все тестовые классы, которые вы зарегистрировали в framwork, и выполнит все методы тех классов, которые вы зарегистрировали, используя CPPUNIT_TEST
или любой другой подходящий макрос.