Как выполнить подмножество модульных тестов в CPPUnit путем выбора их во времени выполнения?

Я использую CppUnit в качестве платформы модульного теста. Действительно ли возможно выбрать подмножество тестовых сценариев для выполнения во времени выполнения?

Существует ли возможность фильтрации, предоставленная в CppUnit для размещения этого?

6
задан ratkok 6 May 2010 в 19:02
поделиться

2 ответа

Метод TestRunner :: run (), который вы, вероятно, вызываете в main (), на самом деле имеет необязательные параметры: run (std :: string testName = "", bool doWait = false, bool doPrintResult = true, bool doPrintProgress = true ). testName должно быть конкретным названием теста. Вы можете запросить конкретный тест по имени, если хотите. Вы также можете вызвать runTest (Test *) для определенного теста или runTestByName (testName).

Но похоже, что вы хотите стать более изощренным. Предполагая, что вы зарегистрировали все свои тесты с помощью макросов CPPUNIT_TEST_SUITE_REGISTRATION (), статический метод TestFactoryRegistry :: makeTest () вернет TestSuite всех зарегистрированных тестов.

Объект TestSuite выдает вектор с помощью метода getTests (). Вы можете перебирать их, сопоставляя их имена с регулярным выражением (или по номеру индекса, или как хотите) и вместо вызова TestRunner :: addTest (registry.makeTest ()) для всего набора, как это делает большинство людей, вы просто добавляете конкретные тесты, которые вы запрашиваете.

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

5
ответ дан 17 December 2019 в 02:25
поделиться

Если вы используете GUI test runner для cppunit, вы можете просто отметить тесты, которые хотите запустить.

Если вы не можете использовать GUI test runner, посмотрите этот пост - он описывает "конфигурируемый" способ определения того, какие тесты запускать на основе xml документа (последнее сообщение описывает более или менее то решение, которое у меня получилось в итоге).

1
ответ дан 17 December 2019 в 02:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: