Выполнение одиночного модульного теста Boost Test в Visual Studio - PullRequest
3 голосов
/ 13 октября 2011

Я пытаюсь настроить модульное тестирование с помощью проекта c ++ с использованием Visual Studio и Boost Test. Я прочитал все вопросы здесь и в других местах интернета о комбинации, но, хотя мой вопрос кажется базовым, я ничего о нем не нахожу - поэтому либо я подхожу к нему неправильно, либо я просто тупой.

У меня есть проект xxx_test, который тестирует функциональность в библиотеке xxx, также в своем собственном проекте. То, что я хочу сделать, - это настроить способ запуска всех модульных тестов (которые тематически сгруппированы в файлах .cpp) один за другим из командной строки. Но насколько я понимаю, все модульные тесты скомпилированы в один большой двоичный файл, который затем запускается. Очевидно, я мог бы создать отдельный проект для каждого файла .cpp с тестами, но это оставило бы мне десятки или сотни проектов, каждый из которых зависел бы от проекта библиотеки xxx в решении.

Полагаю, мне нужен способ поместить все тестовые файлы .cpp в один проект, а затем с помощью переключателя командной строки выбрать msbuild, какой единственный файл .cpp включить в проект. Или это не так, как я должен это делать? Должен ли я скомпилировать все тесты каждый раз, когда я хочу их запустить? То, что я хочу сделать, - это возможность очень быстро скомпилировать тест для одного объекта, так что мне не нужно ждать, пока все перекомпилируется при каждом запуске. Спасибо.

Ответы [ 2 ]

3 голосов
/ 14 октября 2011

Обычно все модульные тесты компилируются в один большой двоичный файл. Однако вы можете запустить только один тест из командной строки, используя параметры времени выполнения .

Например, если вы пишете два модульных теста:

BOOST_AUTO_TEST_CASE( testA )
{
}

BOOST_AUTO_TEST_CASE( testB )
{
}

Вы можете запустить только первый, используя:

my_tests --run_test=testA

Вы можете найти еще несколько примеров использования здесь .

Программный выбор cpp для компиляции является более сложной задачей. Решение может варьироваться в зависимости от времени компиляции, количества тестовых cpps, ...

1 голос
/ 18 октября 2011

Определите отдельный набор тестов в каждом тестовом файле и используйте --run = test_suite_name во время выполнения, чтобы выбрать, какой тестировать

...