Как правило, каждая программа C++ содержит только одно определение функции.<main
>:Вступление в программу. При использованииUnit Test FrameworkВы не должны определять одно. Функция<main
>будет генерироваться для вас фреймворком. Единственное, что вам нужно сделать, если ваша программа состоит из более чем одного блока перевода (файл<cpp
>), это указать на структуру, в которой файлы должны генерировать функцию<main
>. Вы делаете это, определяя макрос.<BOOST_TEST_MODULE
>до включения любого из фреймворковых файлов. Значение этого макроса используется в качестве наименования испытательного модуля, а также главного тестового набора.
Причина для определения функции<main
>у вас двоякая:
- Это позволяетUnit Test Frameworkдля выполнения некоторых пользовательскихинициализации испытательного модуля.
- Это мешает вам определить<
main
>и случайно забыть запустить весь тест (в этом случае запуск программы неправильно указывает на чистый запуск).
По умолчанию точка входа в тестовый модуль определяется подписью:
int main(int argc, char* argv[]);
Он вызываетфункцию инициализации испытательного модуля, затем вызываетбегун испытательного модуляи перенаправляет его возвращаемое значение в окружающую среду.
Точка входа по умолчанию является достаточной в большинстве случаев. Иногда может возникнуть необходимость объявить точку входа с другим именем или подписью. Для переопределения определения точки входа испытательного модуля по умолчанию:
- см. здесь, для одного варианта использования заголовка,
- см. здесь, для статического варианта использования библиотеки,
- см. здесь, для общего варианта использования библиотеки.