1

Catchでテストを書いてみることにしました。WindowsでMinGW32を使用しています。ここで定義されているサンプルファイルを使用しました(便宜上、以下に再現します):

#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 との非互換性ですか? 誰もこの問題に遭遇しましたか?

4

0 に答える 0