Существует ли cppunit, эквивалентный атрибуту категории nunit для тестовых случаев? - PullRequest
1 голос
/ 10 октября 2011

Я бы хотел эквивалентную функцию для атрибута Category nUnit для тестовых случаев.

Я унаследовал большое количество тестовых случаев C ++, некоторые из которых являются модульными тестами, а некоторые - более длительными интеграционными тестами, и мне нужно настроить процесс непрерывной сборки интеграции, чтобы игнорировать интеграционные тесты.

Я бы предпочел просто отметить все интеграционные тестовые случаи и дать команду cppunit исключить их во время сборки CI.

Я пропускаю функцию cppunit или есть альтернативный способ добиться этого?

1 Ответ

4 голосов
/ 12 ноября 2011

Нет собственных атрибутов категории теста. 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 &registry = CppUnit::TestFactoryRegistry::getRegistry();
  runner.addTest( registry.makeTest() );
  bool wasSuccessful = runner.run( "", false );
  return wasSuccessful;
}

TestSuite - это набор тестовых случаев. TestRunner выполняет коллекцию TestSuites. Обратите внимание, что в этом примере он получает TestSuites из TestFactoryRegistry, который вы заполняете, используя макро-вызов CPPUNIT_TEST_SUITE_REGISTRATION (MyTestSuite). Но тестовые случаи - все еще ваши тестовые классы.

Вы, безусловно, можете реализовать эти атрибуты самостоятельно, так же, как вы расширяете любой класс с помощью фасада. Получите ваш новый класс от TestSuite. Добавьте атрибуты в свои тесты, которые вы можете выбрать, затем заполните свой TestRunner, выполняя «просто модульные тесты» или «просто интеграционные тесты» или все, что вы хотите.

В этом отношении TestRunner может выбирать тесты для выполнения на основе имени. Если вы назвали все свои интеграционные тесты с префиксом, таким как ITFoo, ITBar и т. Д., Вы можете выбрать все тесты, которые начинаются с «IT».

Есть десятки способов решить вашу проблему, но вам придется сделать это самостоятельно. Если вы можете написать код, достойный модульного тестирования, для вас это не должно иметь большого значения. : -)

...