Отсутствуют собственные атрибуты категорий тестов. CppUnit немного проще. CppUnit даже не поставляется с средством запуска тестов из командной строки для вашего приложения. Вы должны написать свою собственную простую функцию main(), которая запускает TestRunner.
Вот канонический пример.
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/ui/text/TestRunner.h>
int main( int argc, char **argv)
{
CppUnit::TextUi::TestRunner runner;
CppUnit::TestFactoryRegistry ®istry = CppUnit::TestFactoryRegistry::getRegistry();
runner.addTest( registry.makeTest() );
bool wasSuccessful = runner.run( "", false );
return wasSuccessful;
}
TestSuite — это набор TestCases. TestRunner выполняет набор TestSuites. Обратите внимание, что в этом примере он получает TestSuites из TestFactoryRegistry, который вы заполняете с помощью вызова макроса CPPUNIT_TEST_SUITE_REGISTRATION(MyTestSuite). Но TestCases по-прежнему остаются вашими тестовыми классами.
Вы, безусловно, можете реализовать эти атрибуты самостоятельно, точно так же, как расширяете любой класс с помощью фасада. Создайте свой новый класс из TestSuite. Добавьте в свои тесты атрибуты, которые вы можете выбрать, а затем заполните свой TestRunner, выполняя «только модульные тесты» или «только интеграционные тесты» или что угодно.
В этом отношении TestRunner может выбирать тесты для выполнения на основе имени. Если вы назвали все свои интеграционные тесты префиксом вроде ITFoo, ITBar и т. д., вы можете выбрать все тесты, начинающиеся с «IT».
Есть десятки способов решить вашу проблему, но вам придется сделать это самостоятельно. Если вы можете написать код, достойный модульного тестирования, это не должно иметь для вас большого значения. :-)
person
John Deters
schedule
12.11.2011