Модульные тесты. Как запускать тесты в main()

Пытаюсь запустить тест в функции main, но выдается ошибка "вы не можете перегрузить функцию main()".

#define CATCH_CONFIG_RUNNER // -- main() создавать нужно --
#include "catch.hpp"
int main(int argc, char* argv[])
{
    setlocale(LC_ALL, "Russian");
    int result = Catch::Session().run(argc, argv);
    system("pause");
    return result;
}

person ANurbaev    schedule 04.05.2019    source источник
comment
Возможный дубликат Можем ли мы перегрузить функцию main() в C++?   -  person sh.seo    schedule 04.05.2019
comment
@devdotlog Но в моем коде есть только одна основная функция.   -  person ANurbaev    schedule 04.05.2019


Ответы (1)


Вы должны использовать Catch каким-то другим способом. Что-то вроде этого сработало для меня:

#include <iostream> // some standard includes, whatever you need

#define CATCH_CONFIG_MAIN
#include "catch.hpp"

TEST_CASE("My first test") {
    // --- test code here ---
}

TEST_CASE("My second test") {
    // --- test code here ---
}

Попробуйте руководство по фреймворку, чтобы узнать больше =)

person MasterAler    schedule 04.05.2019
comment
После запуска этого кода окно консоли быстро исчезает. Поэтому я пытаюсь запустить его через основную функцию. - person ANurbaev; 04.05.2019
comment
Это похоже на проблему с вашей IDE. Какой редактор вы используете для запуска программы? Найдите параметр в своей среде IDE, например, сделайте так, чтобы окно консоли сохранялось после завершения программы. - person KamilCuk; 04.05.2019
comment
Этот ответ и учебник не объясняют, почему он не может использовать свой собственный main(), как он должен был бы сделать в соответствии с этой частью документации: github.com/catchorg/Catch2/blob/master/docs/own-main.md#top. - person SiggiSv; 06.05.2019
comment
Взял catch.hpp + точный код из вопроса. Работал просто отлично. Я имел в виду, что если у него проблемы с перегрузкой main(), он может сначала попробовать более простой подход, как правильно сказал @KamilCuk, закрытие окна консоли больше связано с конфигурацией IDE, чем с использованием фреймворка. - person MasterAler; 06.05.2019