Я использую Boost Test в течение долгого времени, и мои тесты выполняются слишком медленно. Поскольку каждый тест очень параллельный, я хочу, чтобы он работал параллельно со всеми моими ядрами.
Есть ли способ сделать это с помощью Boost Test Library? Я не нашел никакого решения. Я пытался найти, как написать пользовательский тестовый прогон, но у меня не было много документации по этому вопросу 🙁
Если нет пути, знает ли кто-нибудь хороший C ++ Test Framework для достижения этой цели? Я думал, что Google Test выполнит эту работу, но, по-видимому, он также не может запустить тест параллельно. Даже если у фреймворка меньше возможностей, чем у других более известных фреймворков, это не проблема, мне просто нужны простые утверждения и многопоточное выполнение.
Спасибо
Вы могли бы использовать CTest за это.
CTest — это тестовый драйвер, который сопровождает CMake (генератор системы сборки), поэтому вам нужно будет использовать CMake для создания системы сборки, используя ваши существующие файлы и тесты, и при этом вы сможете использовать CTest для запуска тестовые исполняемые файлы
Я лично не использовал Boost.Test с CMake (мы используем GoogleTest), но этот вопрос подробнее рассмотрим процесс.
Как только вы добавите тесты в файл CMakeLists, вы можете использовать CTest-х -j
аргумент указать, сколько заданий запускать параллельно.
На что намекает гугл в документации gtest тестирование — позволить нескольким машинам запускать тесты, просто используя параметры командной строки и переменные среды. Вы можете запустить их все на одном компьютере в отдельных процессах, где вы соответственно установите переменные среды GTEST_SHARD_INDEX и GTEST_TOTAL_SHARDS.
В принципе, ничто не мешает запускать несколько процессов исполняемого файла теста с другим параметром фильтрации (Boost.Test, GTEST)
Обновление 2014: https://github.com/google/gtest-parallel
Разделите пакет на несколько меньших наборов, каждый из которых запускается с отдельным двоичным файлом, и добавьте .фальшивый цель тестовое задание к вашей сборке системы в зависимости от всех из них. Запустите как (при условии, что вы используете make) сделать -jN тест
Учитывая, что третья точка пули на список открытых вопросов в настоящее время потокобезопасен, я не верю, что есть способ заставить Boost test запускать тесты в нескольких потоках.
Вместо этого вам нужно будет найти внешний тестовый бегун который поддерживает запуск тестов параллельно (я ожидаю, что это будет работать fork
от новых процессов).