Я решил попробовать написать тесты с Ловить. Я использую MinGW32 в Windows. Я использовал пример файла определения Вот (который я воспроизведу ниже для удобства):
#define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one cpp file
#include "catch.hpp"
unsigned int Factorial( unsigned int number ) {
return number <= 1 ? number : Factorial(number-1)*number;
}
TEST_CASE( "Factorials are computed", "[factorial]" ) {
REQUIRE( Factorial(1) == 1 );
REQUIRE( Factorial(2) == 2 );
REQUIRE( Factorial(3) == 6 );
REQUIRE( Factorial(10) == 3628800 );
}
Я запускаю следующую строку для компиляции программы:
g++ -I./Catch/include/ -W -Wall -o run_tests main.cpp
Я не получаю абсолютно никаких ошибок, но когда я запускаю его, я получаю ошибку сегментации.
Следующий этот, Я пытался поставить свой собственный main()
функция. Теперь код выглядит так:
#define CATCH_CONFIG_RUNNER
#include "catch.hpp"
int main()
{
return 0; // Yes, I'm not even using Catch and it still crashes
}
и я все еще получаю ошибку сегментации.
Это какая-то несовместимость с MinGW? Кто-нибудь тоже сталкивался с этой проблемой?
Задача ещё не решена.
Других решений пока нет …